C# 在部件信息中动态显示当前年份

C# 在部件信息中动态显示当前年份,c#,vb.net,C#,Vb.net,如何在AssemblyInfo文件中设置当前年份 我曾经 与此相反: <Assembly: AssemblyCopyright("Copyright 2012, Company Name.")> 我试过这个: <Assembly: AssemblyCopyright("Copyright" + DateTime.Now.Year.ToString() + ", Company Name.")> 我得到无效的常量错误 我不想使用注册表项,最好的方法是什么?(

如何在AssemblyInfo文件中设置当前年份

我曾经

与此相反:

<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>