VS中.net项目多版本常用配置

说明:

1、进行项目多版本配置前,请参阅:.NET、MSBuild 和 Visual Studio 版本控制概述

2、本身不带Form的.Net项目及带Form的.Net项目配置略有不同:

需要使用winform时,使用:true

涉及WPF时,使用True

3、报“特性重复”错误时,添加:

false

4、运行时引用资源出错的解决:如果原有项目有资源引用,且命名空间的使用不规范,可能导致运行时引用资源出错,解决方法是:改为正确的命名空间,比如:项目名称.文件夹名称.子文件夹名称(可能有多个).文件名称。

修改*.csproj的内容:

--------本身不带Form的.Net项目,如:类库----------

netstandard2.0;netstandard2.1;netcoreapp3.1;net5.0;net462;

$(TargetFrameworks);net5.0-windows;net6.0-windows;net7.0-windows;

true

如遇找不到System.Drawing.Region之类的提示,System.Common.Drawing包版本改为5.03或,6.00,7.00的,.csproj配置改为:

netstandard2.0;netstandard2.1;netcoreapp3.1;net5.0;net462;

$(TargetFrameworks);net5.0-windows;net6.0-windows;

true

--------带Form的.Net项目:----------

net462;netcoreapp3.1;net5.0-windows;net6.0-windows;net7.0-windows;

$(TargetFrameworks);

true

WinExe

disable

disable

--------涉及WPF的项目:---------

net462;netcoreapp3.1;net5.0-windows;net6.0-windows;net7.0-windows;

$(TargetFrameworks);

true

True

Library

disable

disable

特性重复问题:

false

关于.netstandard版本问题:

输入以下时,可以选择多个.net Standard 版本。

netstandard2,如:

netstandard2

图形图像方面的引用问题:

1、同时存在于“System.Drawing.Common 和“System.Drawing.Primitives的情况:

升级时加入了这句:

隐去即可:

2、可以针对不同版本引用不同的System.Drawing.Common包,如:

如还有问题,则隐去System.Drawing.Common,类似:

非字符串资源要求在运行时使用 System.Resources.Extensions 程序集,但未在此项目的引用中找到它。

>>添加System.Resources.Extensions包。

有时,我们可能同时还需要多语言,比如:英文、中文简体、中文繁体、法语、俄语等,此时,需要在原有项目做适当修改。

注:一般情况下原有项目cs代码不用修改!只需要修改csproj项目文件、资源文件及移动部分资源所对应的文件路径。

1、统一项目命名空间。在.csproj中加上:$(MSBuildProjectName.Replace(" ", "_"))

2、增加两个ItemGroup节,这样可以统一Resources.Designer与Resources.resx的关系:

True

True

Resources.resx

ResXFileCodeGenerator

Resources.Designer.cs

3、将在需要复制的子项目(A)中资源(resx中的XML相关数据节点)复制到另一个子项目(B)的resx文件节点中。

4、将上述第3步中A项目对应的文件(如图片,ico,xml等)复制到B子项目的Resouce文件夹中。

(1)在A中只留下与该A子项目有关的资源及文件。

(2)在B子项目的resx中,将涉及A子项目的资源XML段裁切过去,留下B相关的XML段。

OK,多语言多.Net版本的迁移完成!Good Lucky!

你可能感兴趣的:(C#类,WPF研究,阿山杂谈,.netcore,wpf,多版本)