在 ClickOnce 应用程序中包含文件夹
Posted
技术标签:
【中文标题】在 ClickOnce 应用程序中包含文件夹【英文标题】:Include a Folder in ClickOnce Application 【发布时间】:2012-12-01 05:18:56 【问题描述】:我创建了一个 Windows C# 项目并将其作为 ClickOnce 应用程序(项目属性中的发布功能)进行安装。 我想包含一个文件夹,其中包含 Crystal Report (rpt) 文件。在我的应用程序中,我将 rpt 文件的路径作为我的安装位置。 如何在发布时包含此文件夹。这样我就不需要手动复制文件夹了。
【问题讨论】:
@M.Babcock 我猜微软是因为这里使用了 c#。 @itzArun - 将文件夹中的文件标记为资源不会自动将它们包含在部署中? 是的,它是 Microsoft Visual Studio 2008 应用程序的 ClickOnce。 @M.Babcock 但是如何将水晶报表文件标记为资源? @itzArun - 将文件添加到项目中,在解决方案资源管理器中选择文件,然后将文件的构建操作(在文件的属性中)更改为“资源”。 【参考方案1】:Tom 已经解释了如何添加文件。您明确表示您希望在发布 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>
后,您将不会看到解决方案资源管理器中的项目。
【讨论】:
您先生刚刚为我节省了很多浪费的时间。感谢您的详细描述! 如何复制整个目录,而不仅仅是将其内容复制到项目中。例如,在 ClickOnce 应用程序文件夹中显示foo
文件夹。【参考方案2】:
您必须将项目添加到项目并将它们标记为“内容”(在解决方案资源管理器中选择项目,右键单击,属性,设置构建操作)。
【讨论】:
这不会创建所需的文件夹。这些文件包含在程序目录中,但是如果您需要创建的文件夹,您将如何做呢? @Patratacus:文件必须添加到安装后应放置的文件夹下。这将创建文件夹。还剩下一件事:确保将“应用程序文件”对话框中添加的文件的发布状态列更改为“包含”,而不是“包含”(自动)。见this。【参考方案3】:假设我们有两个项目:main - ProjectA
和其他一些 ProjectB
引用 ProjectA
。在ProjectB
中,我们有一个文件夹FolderB
,其中包含一些应包含在ProjectA
的发布(pdf、rpt 等)中的文件。
一旦我们构建了ProjectA
,bin
目录中就会有所有引用的文件和文件夹。但是,当我们使用 ClickOnce 工具发布解决方案时,来自 ProjectB
引用的文件夹不会包含在安装程序中,您也不会在项目发布设置的 Application Files
窗口中看到它们。
解决方案是在ProjectA
中创建一个名为FolderB
的新文件夹,并将ProjectB
中的FolderB
中的现有项目添加到ProjectA
中的这个新文件夹中,使用添加为链接选项。然后所有文件,包括链接到ProjectB
文件夹的文件,都将包含在发布中。
【讨论】:
【参考方案4】:自从 OP 以来已经有很长时间了,但是当我向我的解决方案添加一个文件夹时,向该文件夹添加一个 Crystal Report 并将其标记为“内容”(根据 Tom),然后发布并安装 - 文件夹和报告被添加到 ClickOnce 安装位置。所以汤姆的解决方案对我有用。
【讨论】:
【参考方案5】:Barrie 有最好的解决方案,真的解决了我需要的所有问题!无需在多个项目中包含相同的文件,只需设置在调试中复制文件以实现本地功能和调试的预构建事件。解决了我在一个位置并在多个项目中使用 rdlc(报告)的问题。
【讨论】:
以上是关于在 ClickOnce 应用程序中包含文件夹的主要内容,如果未能解决你的问题,请参考以下文章
在 clickOnce 安装中包含 ACE OLEDB 12 驱动程序