我们有许多项目的大解决方案。我们正在从。net4.8迁移到。net6(最终)。首先,我们正在将一些项目更改为。net standard2.0。
我们的第一个测试是修改一个接口到。net standard2.0。这应该可以工作,因为接口没有依赖项。
注意:由于一些设备驱动程序我们需要构建x86配置(这将在未来改变)。
我创建了一个针对。net standard2.0的测试解决方案,它运行良好(我可以根据需要构建到x86或x64)。
我将项目复制到大型解决方案中,它只会构建到任何CPU。
. csprofile在两个解决方案中看起来是一样的:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
</Project>
但是当我构建解决方案时,我得到:
1>------ Build started: Project: MyTestInterface, Configuration: Debug Any CPU ------
解决方案中的其余项目构建到x86(或x64)。当我在配置管理器中查看时,对于这个项目,任何CPU是唯一的选择-即使它不存在于任何其他项目或配置中。如果我尝试创建一个新的配置,我得到:
This platform could not be created because a solution
platform with the same name already exists.
我如何得到这个。net standard2.0项目构建到x86(或x64)?
经过两个人的努力,我们现在已经可以正常工作了。剩下的唯一问题是,我们必须为解决方案中的每个. net standard2.0项目手动编辑.csproj文件。
为了修复它,我们替换了"PlatformTarget"符合:
<Platforms>x64;x86</Platforms>
不幸的是,PlatformTarget"如果我们试图在配置管理器中进行更改,则会添加行,然后我们必须再次编辑.csproj文件。