【问题标题】:NAnt errors when generating assembly info after project is upgraded to VS2010项目升级到 VS2010 后生成程序集信息时出现 NAnt 错误
【发布时间】:2025-12-09 14:30:01
【问题描述】:

我有一个最近升级到 VS2010 的项目 - 项目/解决方案文件已更新,但我仍然以 .NET 3.5 为目标。

直到现在,我的标准 NAnt 构建脚本还没有给我带来任何麻烦。但是,似乎在更新项目后,updating the NAnt config 了解新工具后,我现在在自动生成程序集信息时收到错误,导致构建失败。相关构建任务如下:

<asminfo output="${dir.src}\${file.commonAssemblyInfo}" language="${project.codeLanguage}">
    <imports>
        <import namespace="System.Reflection" />
    </imports>
    <attributes>
        <attribute type="AssemblyVersionAttribute" value="${project.fullversion}" />
        <attribute type="AssemblyFileVersionAttribute" value="${project.fullversion}" />
        <attribute type="AssemblyInformationalVersionAttribute" value="${project.fullversion}" />
        <attribute type="AssemblyCopyrightAttribute" value="${assembly.copyright}" />
        <attribute type="AssemblyCompanyAttribute" value="${assembly.company}" />
        <attribute type="AssemblyConfigurationAttribute" value="${project.config}" />
        <attribute type="AssemblyTrademarkAttribute" value="${assembly.trademark}" />
        <attribute type="AssemblyProductAttribute" value="${assembly.product}" />
    </attributes>
</asminfo>

asminfo 任务的第一行突出显示了错误。上面写着:

无法生成 AssemblyInfo 文件“C:\Users\Grant\Projects\VisualStudio\Checklist\src\CommonAssemblyInfo.cs”。 此方法隐式使用已被 .NET Framework 淘汰的 CAS 策略。为了出于兼容性原因启用 CAS 策略,请使用 NetFx40_LegacySecurityPolicy 配置开关。请参阅http://go.microsoft.com/fwlink/?LinkID=155570 了解更多信息。

到目前为止,我已经收集到这是 .NET 4 的新内容。以前是否有人必须解决此错误?有谁知道可能触发错误的asminfo 是什么?

【问题讨论】:

    标签: .net visual-studio-2010 nant


    【解决方案1】:

    我相信我想通了。事实证明,框架的某些安全方面发生了变化,新工具考虑到了这一点,但旧版本的 NAnt 没有(使用 0.85)。

    我使用latest nightly from the NAnt site 更新了我的 NAnt(0.91 处于测试阶段,支持 .NET 4),重新运行了我的构建,并且成功了。我必须解决一个单独的问题,但构建现在正在运行。

    【讨论】:

      【解决方案2】:

      NAnt 团队刚刚发布了 NAnt 0.91 Alpha 1,支持 .NET 4.0(实验性)。请下载进行测试并向团队提供您宝贵的反馈。

      谢谢。

      【讨论】:

      • 我最近看到了那条新闻...从 5 月 12 日开始,Alpha 版会取代之前的每晚吗?
      • NAnt 0.91 Alpha 1 于 5 月 30 日发布。所以是的,它从 5 月 12 日起取代了 nightly。
      【解决方案3】:

      要忽略 stylecop 规则并修复它,您可以在 *.csproj 文件中添加下一个设置:

      <ExcludeFromStyleCop>true</ExcludeFromStyleCop>
      

      像这样:

          <Compile Include="Properties\AssemblyInfo.cs">
            <ExcludeFromStyleCop>true</ExcludeFromStyleCop>
          </Compile>
      

      【讨论】: