我的任务是为一个用VB编写的遗留项目添加功能。net Framework 4.8.我的技能集是在c#和更喜欢使用。这两个人在一起能玩得很好吗?我希望能够将我的项目添加到现有的解决方案中,然后在需要的地方添加引用,并相信Microsoft的魔力,这些都可以编译成相同的中间语言。
我已经看到了问题,只是建立现有的应用程序,现在我的项目在那里。(尚未尝试引用它们)
Microsoft.Common.CurrentVersion.targets(2977, 5): [MSB4803] The task "ResolveComReference" is not supported on the .NET Core version of MSBuild. Please use the .NET Framework version of MSBuild. See https://aka.ms/msbuild/MSB4803 for further details.
对我来说,这表明我使用IDE的问题。是否有一种方法可以配置项目以在适当的情况下使用不同版本的MSBuild?
谢谢
1条答案
按热度按时间mspsb9vt1#
我不认为你的问题是关于不同版本的MSBuild。
但首先要回答一个问题:
msbuild mysolution.sln
或dotnet build mysolution.sln
将为整个解决方案使用相同的构建引擎。但是一个解决方案中的不同项目可以指定不同的
ToolsVersion
和不同的目标框架。.NET实现
.Net有不同的implementations,有不同的运行时和库。
您可以有一个将项目与不同目标框架混合的解决方案。一个有针对性的项目解决方案。NET Framework 4.8(
net48
)和.NET 7.0(net7.0
)可以使用相同版本的MSBuild构建。但是你不能混合框架之间的依赖关系。.NET 7程序集不能使用。NET Framework 4.8装配,反之亦然。有.NET Standard。一个项目可以是目标项目,也可以是多目标项目。NET Standard 2.0(
netstandard2.0
),以便两者都可以使用。NET Framework和.NET.MSBuild MSB4803
您是否尝试使用
dotnet
工具构建解决方案?dotnet
工具具有MSBuild的嵌入式副本,但dotnet
是跨平台的,不支持。NET Framework,而且只知道。NET SDK安装。MSB4803错误的文本有些误导,我看到了使用“MSBuild版本”所带来的混乱。
从命令行生成至少有一个项目目标的解决方案时。NET Framework,则不能使用
dotnet
工具。直接使用msbuild
。当msbuild
与Visual Studio(或Visual Studio构建工具)一起安装时,它知道。NET SDK安装和。NET框架安装。dotnet build example.sln
相当于msbuild /t:build example.sln
。build
目标是默认的,因此msbuild /t:build example.sln
等效于msbuild example.sln
。dotnet clean example.sln
相当于msbuild /t:clean example.sln
。不幸的是,
dotnet publish
命令和publish
目标并不等价。摘要
如果旧版项目中使用COM引用,则迁移到。NET 7可能会是一个不小的努力。对于您当前的任务,您可能需要坚持使用当前的代码库,并为迁移创建单独的用例和故事。