我遇到了发布后构建事件所做的更改不会持续存在的问题。
我目前将我的项目设置为在后期构建事件中将一些额外信息附加到一些其他静态文件的末尾。当我在本地 ( <some path>\bin\x86\Debug\
) 查看生成的文件时,我可以验证是否已进行更改。
当我去查看由 clickonce 发布的相同文件(在 <some click once url>\Application Files\<some version>
目录中)时,文件显示时没有对它们进行任何更改。
除了构建后事件,我还尝试过 BeforePublish
目标并仍然收到相同的结果:
<Import Project="$(MSBuildToolsPath)\Microsoft.Common.Targets" />
<Target Name="BeforePublish">
<!-- build event here -->
</Target>
任何人都可以解释为什么我会遇到这种行为并提出解决方案吗?
最佳答案
您需要修改 obj
文件夹中的文件 - 这是它们被复制到 publish
文件夹的地方。在我的应用程序中,我有以下逻辑来为应用程序的所有文件签名:
<Target Name="SignOutput" AfterTargets="CoreCompile" Condition="'$(ConfigurationName)'=='Release'">
<PropertyGroup>
<TimestampServerUrl>http://timestamp.verisign.com/scripts/timestamp.dll</TimestampServerUrl>
<ApplicationDescription>MY APP</ApplicationDescription>
<SigningCertificateCriteria></SigningCertificateCriteria>
</PropertyGroup>
<ItemGroup>
<SignableFiles Include="$(ProjectDir)obj\$(ConfigurationName)\$(TargetName)$(TargetExt)" />
</ItemGroup>
<Exec Condition=" '$(ConfigurationName)'=='Release'" Command=""c:\Program Files (x86)\Windows Kits\8.0\bin\x64\signtool.exe" sign $(SigningCertificateCriteria) /d "$(ApplicationDescription)" /t "$(TimestampServerUrl)" "%(SignableFiles.Identity)"" />
</Target>
注意
Include="$(ProjectDir)obj\$(ConfigurationName)\$(TargetName)$(TargetExt)"
行。
关于c# - 在构建事件中所做的更改不会在 clickonce 发布时持续存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21564834/