为什么Visual Studio中的ClickOnce不会部署来自依赖程序集的内容文件?
为什么Visual Studio中的ClickOnce不会部署来自依赖程序集的内容文件?
在使用Visual Studio的发布界面时,为什么无法将引用的内容文件显示出来?我找到了一个解决方法来强制发布包括这些文件。
正如这篇MSDN文章所建议的,将以下内容放入项目文件中:
False
请注意,在某些情况下,可能需要重新启动Visual Studio(而不仅仅是重新加载项目)才能使这些更改生效。
希望能有一种使用界面来完成这个任务的方法。
我已经尝试了这个解决方案,但对我来说不可行,我使用的是VS2013 SP1。
在VS 2015上也不再起作用。文件被上传/发布,但它们不会在任何部署清单上声明,因此客户端不会下载它们。我猜想_DeploymentManifestFiles
是一个内部项,不是官方支持的输出目标。
为什么Visual Studio中的ClickOnce不会部署依赖程序集中的内容文件?
这个问题的出现原因是,ClickOnce在部署应用程序时并不自动包含依赖程序集中的内容文件。由于这个原因,开发者需要采取额外的步骤来确保这些文件被正确部署。
解决方法是在项目的csproj文件中添加以下代码段:
这将使Visual Studio自动将指定文件夹中的所有.rpt文件视为解决方案的一部分。如果想要包括所有文件,可以使用`*.*`通配符。这在有一个容器文件夹的情况下更有意义,例如`bin\MyDeployables\**\*.*`。
我们还可以使用类似的方法来使用Cassette MSBuild在发布时合并和压缩JS文件,并通过内置的VS发布工具发布创建的文件。
需要注意的是,由于否则这些文件将被放在"Bin"子目录中,可能需要在项目文件中为生成的PublishFile元素设置TargetPath。在Visual Studio 2013中,这将把文件复制到`app.publish\Bin\Release\My Deployables\filename.ext`,而实际上希望将它们复制到`app.publish\My Deployables\filename.ext`。
有用户询问是否有办法解决"app.publish\My Deployables\filename.ext"的问题,并且是否有办法模拟一个最终的输出文件夹。如果没有的话,用户只能更改代码以在bin\release目录中搜索文件,这样虽然有些混乱并且不理想,但目前在搜索了3个小时后还没有找到解决方法。
尽管这种方法可能有效,但在项目中引用生成输出(bin)似乎是一个非常不好的主意。