索姆已经解释了如何添加文件。您具体说您想要在发布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>
,您将不会看到这些项在解决方案资源管理器中。
foo
的文件夹。 - Jack您需要将这些项目添加到项目中,并将它们标记为“内容”(在解决方案资源管理器中选择该项,右键单击,选择属性,设置生成操作)。
假设我们有两个项目:主要的 - ProjectA
和其他一些引用了 ProjectA
的 ProjectB
。在 ProjectB
中,我们有一个名为 FolderB
的文件夹,其中包含一些应在发布时包括的文件(pdf、rpt 等)ProjectA
。
一旦我们构建了 ProjectA
,所有引用的文件和文件夹都将出现在 bin
目录中。但是,当我们使用 ClickOnce 工具发布解决方案时,来自引用的 ProjectB
的文件夹不会包含在安装程序中,并且您在项目发布设置的 Application Files
窗口中也看不到它们。
解决此问题的方法是在 ProjectA
中创建一个名为 FolderB
的新文件夹,并使用 添加为链接 选项将来自 ProjectB
的现有项目添加到 ProjectA
中的这个新文件夹中。然后,所有文件,包括从 ProjectB
文件夹链接的文件,都将在发布 ProjectA
时包括在内。
距离原帖已经过去了很长时间,但是当我向我的解决方案中添加一个文件夹,将Crystal Report添加到该文件夹并将其标记为“内容”(按照Tom的建议),然后发布和安装 - 该文件夹和报告将被添加到ClickOnce安装位置。所以Tom的解决方案对我有效。
Barrie提供了最好的解决方案,真正解决了我所需的一切!无需在多个项目中包含相同的文件,只需设置预构建事件,将文件复制到本地功能和调试的debug目录中。解决了我的rdlc(报表)在一个位置上并在多个项目中使用它们的问题。