我正在尝试对 .Net Framework v4.5.2 和 .net standard2.0 进行多目标定位,我的项目文件具有以下定位选项属性:
<TargetFramework>v4.5.2</TargetFramework>
<TargetFrameworks>v4.5.2;netstandard2.0</TargetFrameworks>
我没有看到我的项目中有任何引用框架 4.0 的地方,但我仍然得到:
[...]\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2203,5):
warning MSB3274: The primary reference "RestSharp, Version=105.2.3.0,
Culture=neutral, processorArchitecture=MSIL" could not be resolved because it was
built against the ".NETFramework,Version=v4.5.2" framework. This is a higher
version than the currently targeted framework ".NETFramework,Version=v4.0".
后面是很多CS0234(未找到RestSharp内的类型或命名空间)
obj 文件夹包含一个名为“.NETFramework,Version=v4.0.AssemblyAttributes”的文件,因此出于某种原因 VS 认为我想以 4.0 为目标。 obj 文件夹还包含两个文件夹 netstandard2.0 和 v4.5.2 这让我很困惑,因为这里 MSBuild 似乎得到了我想要的东西。
我尝试清理解决方案并手动删除 obj 和 bin 文件夹。没有任何成功。
您知道这可能是从哪里产生的或者如何进一步调试吗?谢谢!
编辑:
刚刚在 VS2019 中打开解决方案时看到我得到:
恢复输入无效。发现重复的框架:“net40,net40”。输入文件:[myproject.csproj]
但是使用 myproject.csproj greping net40 没有匹配项。
当构建版本的版本号高于 Visual Studio 版本预安装的版本时,通常会发生该错误。 请尝试编辑项目文件以忽略目标框架版本不匹配,如下所示,看看它是否可以解锁您。
<PropertyGroup>
<ResolveAssemblyReferenceIgnoreTargetFrameworkAttributeVersionMismatch>true</ResolveAssemblyReferenceIgnoreTargetFrameworkAttributeVersionMismatch>
</PropertyGroup>