C# 在部件信息中动态显示当前年份
如何在AssemblyInfo文件中设置当前年份 我曾经 与此相反:C# 在部件信息中动态显示当前年份,c#,vb.net,C#,Vb.net,如何在AssemblyInfo文件中设置当前年份 我曾经 与此相反: <Assembly: AssemblyCopyright("Copyright 2012, Company Name.")> 我试过这个: <Assembly: AssemblyCopyright("Copyright" + DateTime.Now.Year.ToString() + ", Company Name.")> 我得到无效的常量错误 我不想使用注册表项,最好的方法是什么?(
<Assembly: AssemblyCopyright("Copyright 2012, Company Name.")>
我试过这个:
<Assembly: AssemblyCopyright("Copyright" + DateTime.Now.Year.ToString() + ", Company Name.")>
我得到无效的常量错误
我不想使用注册表项,最好的方法是什么?(这样,当用户右键单击EXE并查找程序集信息时,可以看到当前年份)
谢谢。最好的方法可能是使用或之类的工具将其集成到构建过程中 以下是一篇解释如何使用MSBuild更改AssemblyInfo的文章:
更新。您可以使用NANT/MSBuild任务修改AssemblyInfo.cs文件,就像我们为每个生成更改每个程序集的版本一样
有关详细信息,请访问通常,对于这种替换,您可以使用预构建步骤调用自动生成assemblyInfo.cs文件的脚本
你可以看看这个帖子:我在另一篇帖子()上看到了一些东西,在这里可能真的很有用 试试这个 将新文件添加到解决方案中所有项目通用的源存储库中。将该文件称为AssemblyCopyright.tt 在该文件中,为c添加以下代码#
使用制度;
运用系统反思;
[大会:大会版权所有(“版权所有©公司名称”)]
或vb
导入系统
输入系统。反射
然后,从每个AssemblyInfo.cs文件中删除AssemblyCopyright属性
最后,将AssemblyCopyright.tt文件的链接添加到每个项目中
模板文件将在正确年份的每个版本上重新创建一个新的AssemblyCopyright.cs文件。我有类似的问题,但对于新样式的csproj文件;包含文件版本信息的。我在这里找到了一个很好的答案。奇怪的是,这是一个与我的和OP问题有些不同的问题。但是,我认为我想要的是被接受的答案。也就是说,csproj文件中的$([System.DateTime]::Now.Year)计算为当前年份。尝试以下方法:
<Assembly: AssemblyCopyright("Copyright $([System.DateTime]::Now.ToString('yyyy'), Company Name.")>
然后,在更新程序集信息的任务中,我有一个ItemGroup
,包括
<AssemblyAttributes Include="AssemblyCopyright">
<_Parameter1>"Copyright © $(CopyrightYears) ..."</_Parameter1>
</AssemblyAttributes>
您可以用作属性的功能已记录在案向Outlook或您每年1月1日使用的任何功能添加日历提醒,以便转到并更改应用程序中的所有版权日期。:)版权声明是一个常量,内置于生成的可执行文件的文件信息中。你希望Windows每次试图获得版权时都能在你的程序中运行一个函数吗?你不希望在当前年份或生成的年份运行吗?
<Assembly: AssemblyCopyright("Copyright $([System.DateTime]::Now.ToString('yyyy'), Company Name.")>
<!-- We started in 2021. So, if it's still 2021 we just want to show '2021' -->
<PropertyGroup Condition="$([System.DateTime]::Now.ToString('yyyy')) == '2021'">
<CopyrightYears>2021</CopyrightYears>
</PropertyGroup>
<!-- But for later years we want a range. E.g. in 2023 it will show '2021 - 2023' -->
<PropertyGroup Condition="$([System.DateTime]::Now.ToString('yyyy')) != '2021'">
<CopyrightYears>2021 - $([System.DateTime]::Now.ToString('yyyy'))</CopyrightYears>
</PropertyGroup>
<AssemblyAttributes Include="AssemblyCopyright">
<_Parameter1>"Copyright © $(CopyrightYears) ..."</_Parameter1>
</AssemblyAttributes>
<MakeDir Directories="$(IntermediateOutputPath)" />
<WriteCodeFragment Language="C#"
OutputFile="$(IntermediateOutputPath)Version.cs"
AssemblyAttributes="@(AssemblyAttributes)" />
<ItemGroup>
<Compile Include="$(IntermediateOutputPath)Version.cs" />
</ItemGroup>