【问题标题】:Changes made in build event are not persisting on clickonce publish在构建事件中所做的更改不会在 clickonce 发布时持续存在
【发布时间】:2014-02-04 22:24:58
【问题描述】:

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

我目前将我的项目设置为在后期构建事件中将一些额外信息附加到一些其他静态文件的末尾。当我在本地 (<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>



谁能解释我为什么会遇到这种行为并提出解决方案?

【问题讨论】:

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


    【解决方案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)"
    

    行。

    【讨论】:

      猜你喜欢
      • 2020-08-02
      • 1970-01-01
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      • 1970-01-01
      • 2016-04-13
      • 2014-05-27
      • 1970-01-01
      相关资源
      最近更新 更多