【发布时间】:2018-05-05 10:01:47
【问题描述】:
约束是: 使用 Visual Studio 2017。 最终需要从调用 MSBuild 的 powershell 脚本调用。
不确定其相关性,但需要能够构建以下内容:
- asp.net 461
- asp.net-core 1.1 和 2.0 程序集
目前尝试失败:
- How to have an auto incrementing version number (Visual Studio)?
-
Code Generation in a Build Process - 被描述为微软关于在 MSBuild 中使用“TextTemplating”的最新文档。国家需要复制某些 DLL 来构建服务器。文件不在 doc 中指定的位置,并且不知道 在哪里复制它们,我找到了所有文件。另外修改了
.csproj's导入Microsoft.TextTemplating.targets路径到正确的位置,但是在运行MSBuild 时我得到了。 “错误 MSB4018:“TransformTemplates”任务意外失败。” - This SO Answer - MSBuild support for T4 templates in Visual Studio 2017 RTM
示例尝试 of "Code Generation in a Build Process" 适用于从 VS 构建但不适用于 MSBuild:
放置在项目的根目录 - handleVersioning.tt:
<#@ template language="C#" #>
using System.Reflection;
[assembly: AssemblyVersion("1.0.0.*")]
[assembly: AssemblyFileVersion("<#= this.Year #>.<#= this.Month #>.<#= this.Day #>.<#= this.Minute #>")]
<#+
int Year = DateTime.UtcNow.Year;
int Month = DateTime.UtcNow.Month;
int Day = DateTime.UtcNow.Day;
int Minute = unchecked((int)DateTime.UtcNow.TimeOfDay.TotalMinutes);
#>
.csproj:
<Import Project="...hardcoded...\Microsoft.CSharp.targets" />
<!-- This is the important line: -->
<Import Project="...hardcoded...\TextTemplating\Microsoft.TextTemplating.targets" />
<PropertyGroup>
<TransformOnBuild>true</TransformOnBuild>
<OverwriteReadOnlyOutputFiles>true</OverwriteReadOnlyOutputFiles>
<TransformOutOfDateOnly>false</TransformOutOfDateOnly>
</PropertyGroup>
这样调用:
msbuild myProject.csproj /t:TransformAll
【问题讨论】:
-
您是否故意标记“asp.net-core”?如果您使用的是 asp.net 核心,则您已经有一个项目系统,该系统可以根据 msbuild 值生成程序集信息文件,这些值可以在命令行上传递或根据项目文件中的日期和时间计算。
-
它需要能够构建 asp.net 461 程序集以及 asp.net-core 1.1 和 2.0。我之前从标题中删除了 asp.net-core,也会删除标签。
-
所以你的asp.net核心项目已经支持-
msbuild /p:Version=1.2.3.4将设置程序集版本,我建议基于existing source code为基于sdk的项目为经典项目创建“polyfill目标” .现在没有时间做,但也许在接下来的几天里。然后会表现得像stackoverflow.com/questions/43274254 -
@Martin Ullrich,谢谢。我已经在使用 powershell 来调用
msbuild所以msbuild /p:Version=1.2.3.4工作完美。它解决了我的 实际 问题,但必须使用 t4 模板禁用自动增量解决方案才能工作。知道一种无论您从哪里构建都可以使用的方法仍然会很棒。同样感谢! -
您使用的是哪个 MSBuild?位于С:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin ?