c# - 在构建事件中所做的更改不会在 clickonce 发布时持续存在

标签 c# visual-studio msbuild clickonce msbuild-task

我遇到了发布后构建事件所做的更改不会持续存在的问题。

我目前将我的项目设置为在后期构建事件中将一些额外信息附加到一些其他静态文件的末尾。当我在本地 ( <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="&quot;c:\Program Files (x86)\Windows Kits\8.0\bin\x64\signtool.exe&quot; sign $(SigningCertificateCriteria) /d &quot;$(ApplicationDescription)&quot; /t &quot;$(TimestampServerUrl)&quot; &quot;%(SignableFiles.Identity)&quot;" />
  </Target>

注意

Include="$(ProjectDir)obj\$(ConfigurationName)\$(TargetName)$(TargetExt)"

行。

关于c# - 在构建事件中所做的更改不会在 clickonce 发布时持续存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21564834/

相关文章:

c# - 使用 houghline 变换的直线斜率 c# Aforge.Net

c# - 用户是否使用键盘或鼠标离开 WPF TextBox?

上传后 C# ASPX FTP 文件大小错误

c - 在 Windows 中区分 cmd 行参数和拖动到图标参数的方法?

c++ - undef 后代码补全仍然确认宏

git - 我如何从 git post-commit Hook 运行 cmd

c# - 如何使用依赖于模型属性的接口(interface)设计领域模型

visual-studio - 是否有维护项目的 Visual Studio 2008 和 2010 版本的好方法?

c# - Microsoft.TeamTest.targets 中的 MSBuild NullReferenceException

asp.net - 文件转换,是否可以将自动增量添加到设置中