在构建事件中所做的更改不会在clickonce发布上持久存在

时间:2014-02-04 22:24:58

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

我遇到的问题是,发布后事件不会在发布时保持不变。

我目前已将我的项目设置为在post build事件中的一些其他静态文件的末尾添加一些额外信息。当我在本地查看结果文件(<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>



任何人都可以解释为什么我遇到这种行为并提出解决方案吗?

1 个答案:

答案 0 :(得分:1)

您需要修改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)"

线。