• 2019-11-29-解决从旧格式的-csproj-迁移到新格式的-csproj-格式-AssemblyInfo-文件值重复问题...


    title author date CreateTime categories
    解决从旧格式的 csproj 迁移到新格式的 csproj 格式 AssemblyInfo 文件值重复问题
    lindexi
    2019-11-29 08:58:48 +0800
    2019-2-27 8:55:0 +0800
    VisualStudio

    现在很多小伙伴开始使用了 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 新项目格式

  • 相关阅读:
    Creating a Simple Direct2D Application
    关于ssh加密方式的理解
    关于2147217913 从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界 的问题解决方法
    关于 win2003中ASP.Net 的edit configuration 无法使用的答疑
    vc 用ado访问Oracle数据库的代码示例
    手工移除vs6的VSS绑定
    关于:无法执行值从 char 到 char 的隐性转换,因为该值的排序规则因排序规则冲突而未能解决
    vs2003 无法进行调试的经历
    关于如何在VMware上安装Puppy Linux
    VB: DataGrid 的列可见问题
  • 原文地址:https://www.cnblogs.com/lindexi/p/12085384.html
Copyright © 2020-2023  润新知