我创建了一个 Windows C# 项目并将其作为ClickOnce应用程序(项目属性中的发布功能)进行安装。我想包含一个包含Crystal Report (rpt) 文件的文件夹。在我的应用程序中,我将 rpt 文件的路径作为我的安装位置。如何在发布时包含此文件夹。这样我就不需要手动复制文件夹。
5 回答
所以汤姆已经解释了如何添加文件。您明确表示您希望在发布 ClickOnce 应用程序后为其添加一个文件夹。假设您在解决方案的根目录中有一个名为Dependencies
的文件夹,其中包含一个Reports
包含所有 RPT 文件的文件夹。以下是确保部署的应用程序包含Dependencies
文件夹的所有内容的方法:
在 Visual Studio 中右键单击您的项目,然后选择“卸载项目”。
右键单击并选择以编辑 csproj 文件。
在结束
</Project>
标记之前添加:<ItemGroup>
<Content Include="$(SolutionDir)Dependencies\**\*">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
<Visible>false</Visible>
</Content>
</ItemGroup>
这会将 Dependencies 文件夹中的所有内容添加到项目中。我们
\**\*
在 Include 末尾使用语法,%(RecursiveDir)
以确保该Reports
文件夹将出现在已发布的版本以及报告文件中。设置后<Visible>false</Visible>
,您将看不到解决方案资源管理器中混乱的项目。
您必须将项目添加到项目并将它们标记为“内容”(在解决方案资源管理器中选择项目,右键单击,属性,设置构建操作)。
假设我们有两个项目: main -ProjectA
以及其他一些ProjectB
对ProjectA
. 在ProjectB
我们有一个FolderB
包含一些文件的文件夹,这些文件应该包含在ProjectA
.
一旦我们构建,目录ProjectA
中就会有所有引用的文件和文件夹bin
。但是当我们使用 ClickOnce 工具发布解决方案时,引用的文件夹ProjectB
不会包含在安装程序中,您也不会Application Files
在项目发布设置的窗口中看到它们。
解决方案是创建一个名为FolderB
in的新文件夹,并使用Add As Link选项ProjectA
将现有项目表单添加FolderB
到ProjectB
这个新文件夹中。然后所有文件,包括链接到文件夹的文件,都将包含在发布中。ProjectA
ProjectB
自 OP 以来已经有很长时间了,但是当我将文件夹添加到我的解决方案时,将 Crystal Report 添加到该文件夹并将其标记为“内容”(根据 Tom),然后发布并安装 - 文件夹和报告被添加到ClickOnce 安装位置。所以汤姆的解决方案对我有用。
巴里有最好的解决方案,真的解决了我需要的一切!无需在多个项目中包含相同的文件,只需设置在调试中复制文件以实现本地功能和调试的预构建事件。解决了我在一个位置使用 rdlc(报告)并在多个项目中使用它们的问题。