Lea*_*yes 3 c# build visual-studio visual-studio-2013
我正在使用 Visual Studio 2013 编译 DLL,但由于技术原因无法使用,System.Version因为我的目标运行时环境之一不支持它。
有没有办法在编译时自动将程序集“FileVersion”放入常量中?
public const string MyFileVersion = "{{ PLEASE REPLACE ME }}";
Run Code Online (Sandbox Code Playgroud)
我没有使用构建服务器或任何类似的东西,只是使用 Visual Studio 2013。
看来 t4 模板可以帮助你。它是模板生成引擎。有足够的相关信息,这将会有所帮助。
我制作了一个简单的模板,可以满足您的需求。这只是一个示例,可能您需要在代码中进行一些调整:
<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="Microsoft.CSharp.dll" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Text.RegularExpressions" #>
<#@ import namespace="System.Reflection" #>
<#@ output extension=".cs" #>
<#
var assemblyVersionRegex = new Regex(@"AssemblyVersion\(\""(?<version>(.*?))\""\)");
var pathBase = new FileInfo(Host.TemplateFile).DirectoryName;
var assemblyInfoPath = Path.Combine(pathBase, @"Properties\AssemblyInfo.cs");
var assemblyInfoSources = File.ReadAllText(assemblyInfoPath);
var match = assemblyVersionRegex.Match(assemblyInfoSources);
var version = match.Success
? match.Groups["version"].Value
: "unknow";
#>
public static class SomeAssemblyInfo
{
public const string Version = "<#= version #>";
}
Run Code Online (Sandbox Code Playgroud)
因此,它读取文件 AssemblyInfo.cs (或另一个文件,如果你想要的话)从中获取版本并准备类 SomeAssemblyInfo :
public static class SomeAssemblyInfo
{
public const string Version = "1.0.0.0";
}
Run Code Online (Sandbox Code Playgroud)
您需要做的最后一件事是在构建时运行此模板。在这里您可以找到如何操作。
| 归档时间: |
|
| 查看次数: |
1891 次 |
| 最近记录: |