今天我在asp.net页面中有以下代码:
df = df.xs(df.index.levels[0][0])
print (df)
'sum'
col1 col2 col3 col4
1 34 green 10 0.0
yellow 30 1.5
orange 20 1.1
是否可以在构建时设置此项:
<span>V2.0.412</span>
答案 0 :(得分:1)
您最接近开箱即可使用AssemblyVersionAttribute
,为构建/修订指定一个星号(强调我的):
您可以指定所有值,也可以使用星号(
*
)接受默认的内部版本号,修订号或两者。例如,[assembly:AssemblyVersion("2.3.25.1")]
表示2为主要版本,3表示次要版本,25表示构建号,1表示版本号。诸如[assembly:AssemblyVersion("1.2.*")]
的版本号指定1作为主要版本,2指定为次要版本,并接受默认的构建和修订号。诸如[assembly:AssemblyVersion("1.2.15.*")]
的版本号指定1作为主要版本,2作为次要版本,15作为构建号,并接受默认修订号。 默认内部版本号每天递增。默认修订号是自当地时间午夜起的秒数(不考虑夏令时的时区调整)除以2。
类似于:
[assembly:AssemblyVersion("2.0.*")]
然后,您可以根据上述说明从中提取DateTime
值。您需要更改ASP.NET页面以调用实用程序方法来检索DateTime
,但它仍然是构建时间。
不可否认,这将是一个构建本地时间而不是时间戳,但这对你来说可能已经足够了。
请注意,根据您的项目系统,您可能需要禁用编译确定性才能使其生效,如上面的示例所示。
这是一个简单的.NET Core应用程序,用于演示:
using System;
using System.Reflection;
[assembly:AssemblyVersion("1.2.*")]
class Test
{
static void Main()
{
var version = typeof(Test).GetTypeInfo().Assembly.GetName().Version;
Console.WriteLine($"Assembly version: {version}");
Console.WriteLine($"Build time: {ConvertToDateTime(version)}");
}
static DateTime ConvertToDateTime(Version version) =>
new DateTime(2000, 1, 1)
.AddDays(version.Build)
.AddSeconds(version.Revision * 2);
}
(2000年1月1日的时期在old MSDN docs中指定,但在新的时期并不明显。)
项目文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
<TargetFramework>netcoreapp2.0</TargetFramework>
<LangVersion>latest</LangVersion>
<Deterministic>false</Deterministic>
</PropertyGroup>
</Project>
您甚至可以在csproj中设置AssemblyVersion
- 尽管如此,您还需要设置AssemblyFileVersion
,或禁用CS7035。示例使用与上面相同的代码,但没有[assembly:AssemblyVersion]
行:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<AssemblyVersion>1.2.*</AssemblyVersion>
<FileVersion>1.2.0.0</FileVersion>
<TargetFramework>netcoreapp2.0</TargetFramework>
<LangVersion>latest</LangVersion>
<Deterministic>false</Deterministic>
</PropertyGroup>
</Project>
我的盒子上的示例输出:
Assembly version: 1.2.6676.30244
Build time: 12/04/2018 16:48:08
在多个dotnet run
调用之间,该输出保持不变,直到我更改源文件,此时它将被重建,并且构建时间也会相应地更改。
如果你不遵循如何从中获取你想要的字符串,这里有一个自包含的方法完全,假设你已经将程序集版本设置为使用{{ 1}}如上所述:
*
目前(在写作时,在我的机器上)返回“412”。
另一种选择是生成代码作为构建的一部分,但这将转移到更自定义的项目区域。