zoukankan      html  css  js  c++  java
  • 解决从旧格式的 csproj 迁移到新格式的 csproj 格式 AssemblyInfo 文件值重复问题

    现在很多小伙伴开始使用了 dotnet core 项目,但是如果是从以前的 dotnet framework 的项目修改为 dotnet core 项目格式,会发现编译的时候出现了 AssemblyInfo 里面的很多值重复

    如果直接修改格式,没有删除 AssemblyInfo 文件,很多时候会发现编译的时候出现下面提示

        Error CS0579: “System.Reflection.AssemblyCompanyAttribute”特性重复 
        Error CS0579: “System.Reflection.AssemblyConfigurationAttribute”特性重复 
        Error CS0579: “System.Reflection.AssemblyFileVersionAttribute”特性重复 
        Error CS0579: “System.Reflection.AssemblyProductAttribute”特性重复 
        Error CS0579: “System.Reflection.AssemblyTitleAttribute”特性重复 
        Error CS0579: “System.Reflection.AssemblyVersionAttribute”特性重复 
    

    遇到这个问题可以从两个方面解决

    删除重复的特性

    打开 AssemblyInfo 文件,几乎可以删除里面的所有代码,除了 ComVisible 和 ThemeInfo 和其他自己添加的代码,其他都可以删除

    using System.Runtime.InteropServices;
    using System.Windows;
    
    
    // 将 ComVisible 设置为 false 会使此程序集中的类型
    //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
    //请将此类型的 ComVisible 特性设置为 true。
    [assembly: ComVisible(false)]
    
    //若要开始生成可本地化的应用程序,请设置
    //.csproj 文件中的 <UICulture>CultureYouAreCodingWith</UICulture>
    //例如,如果您在源文件中使用的是美国英语,
    //使用的是美国英语,请将 <UICulture> 设置为 en-US。  然后取消
    //对以下 NeutralResourceLanguage 特性的注释。  更新
    //以下行中的“en-US”以匹配项目文件中的 UICulture 设置。
    
    //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
    
    
    [assembly: ThemeInfo(
        ResourceDictionaryLocation.None, //主题特定资源词典所处位置
                                         //(未在页面中找到资源时使用,
                                         //或应用程序资源字典中找到时使用)
        ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置
                                                  //(未在页面中找到资源时使用,
                                                  //、应用程序或任何主题专用资源字典中找到时使用)
    )]
    
    

    不自动创建 AssemblyInfo 特性

    在新的 dotnet core 格式,默认会自动创建 AssemblyInfo 特性,编译不通过的原因是存在 AssemblyInfo 文件和使用 dotnet core 项目格式创建的 AssemblyInfo 特性除了删除 AssemblyInfo 文件还可以让 dotnet core 项目格式不要创建

    通过在 csproj 添加下面代码可以不创建

    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    

    上面这个代码需要放在 PropertyGroup 里,请看下面

        <PropertyGroup>
            <OutputType>WinExe</OutputType>
            <TargetFramework>net472</TargetFramework>
            <UseWPF>true</UseWPF>
            <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
        </PropertyGroup>
    

    这里有一个好用的迁移工具 CsprojToVs2017 Tooling for converting pre 2017 project to the new Visual Studio 2017 format. 可以将之前的 csporj 格式修改为新的 csproj 格式

    从以前的项目格式迁移到 VS2017 新项目格式

    我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新

    如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入

    知识共享许可协议
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

  • 相关阅读:
    javascript里面&&和||
    Who am I?
    Mis开发过程中的不同角色(忽略外包的情况下)
    重蹈覆辙?
    适时使用Photo Courtesy
    【LeetCode练习题】Reverse Linked List II
    【C++】大数的+-*/四则运算
    【LeetCode练习题】Multiply Strings
    【LeetCode练习题】Evaluate Reverse Polish Notation
    【LeetCode练习题】Merge k Sorted Lists
  • 原文地址:https://www.cnblogs.com/lindexi/p/12086985.html
Copyright © 2011-2022 走看看