Visual Studio 一直在恢复,因为 Directry.Build.props

Visual Studio always restoring because Directry.Build.props

我创建了一个 Directory.Build.props 文件,VersionSuffix 包含当前 HourMinutes:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <VersionSuffix>$([System.DateTime]::Now.ToString(yyyy-MM-dd-HHmm))-$(Configuration)</VersionSuffix>
  </PropertyGroup>
</Project>

现在,因为这个文件每分钟都在变化,所以 Visual Studio 完成它自动恢复,然后重新启动它,因为一分钟后属性就不同了。

所以,我添加了一个 Target 来仅在 Build:

之前更新属性
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="Version" BeforeTargets="Build">
    <PropertyGroup>
      <VersionSuffix>$([System.DateTime]::Now.ToString(yyyy-MM-dd-HHmm))-$(Configuration)</VersionSuffix>
    </PropertyGroup>
  </Target>
</Project>

现在 Visual Studio 工作正常,但从命令行 (msbuild MySln.sln /t:Build...) 属性不适用。

(我试过 Directory.Build.targets,效果一样(除非我错过了什么))

(您可以尝试使用更简单的 属性,例如 Company)。

如何使用基于时间的 属性,但仅在创建 DLL 时应用它?

使用 InitialTargets 解决了我的问题:

<Project InitialTargets="Version" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="Version">
    <PropertyGroup>
      <VersionSuffix>$([System.DateTime]::Now.ToString(yyyy-MM-dd-HHmm))-$(Configuration)</VersionSuffix>
    </PropertyGroup>
  </Target>
</Project>