Nou*_*uny 6 msbuild clickonce publish visual-studio-2010 visual-studio-2012
我使用我在这个问题中找到的解决方案来定制我的项目:
为什么Visual Studio中的ClickOnce不从依赖程序集部署内容文件?
<ItemGroup>
<AdditionalPublishFile Include="$(OutputPath)\**\*.rpt">
<Visible>False</Visible>
</AdditionalPublishFile>
</ItemGroup>
<Target Name="BeforePublish">
<Touch Files="@(IntermediateAssembly)" />
<CreateItem Include="@(AdditionalPublishFile)" AdditionalMetadata="TargetPath=%(RecursiveDir)%(Filename)%(extension);IsDataFile=false">
<Output TaskParameter="Include" ItemName="_DeploymentManifestFiles" />
</CreateItem>
</Target>
Run Code Online (Sandbox Code Playgroud)
它在VS 2010中运行良好,直到我升级到VS 2012,其他文件未包含在应用程序清单中!因此,当用户安装应用程序时,应用程序主文件夹中缺少所提到的文件.
VS 2012有什么变化?或者更改是在MSBuild中?
编辑:
我提到了最初的问题,从我得到了这个想法,基本上我使用依赖注入来加载一些程序集,这意味着我的项目和程序集之间没有硬引用,所以点击一次部署不会考虑那些程序集,它迫使我将它们添加到项目中,或者使用上面提到的解决方案,我选择了上面提到的解决方案,因为它是不可见且容易的.
但是在迁移到VS 2012后它被打破了.
我发现你的问题令人困惑,因为我以前从未见过有人使用 ClickOnce 这样做,所以我与 Microsoft 的 ClickOnce 人员讨论了这个问题。他说你所做的事情不受支持,所以他们不会对此进行测试。msbuild 有多个更改可能会破坏您正在做的事情。
您想要做的是获取与部署中包含的辅助引用关联的文件吗?换句话说,您有一个主项目引用通过构建第二个项目创建的另一个程序集,并且第二个程序集具有内容文件,并且您希望它们包含在您的项目中?
如果这就是您想要做的,您应该考虑将这些文件链接到主项目。为此,您可以添加现有项目作为链接,并将其指向第二个项目中的内容。然后,当您构建第一个项目时,该内容将被包含在内。