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