目前我正在调查将我们的工具集从VS2013、15和17迁移到只使用VS2022,以便简化并减少构建解决方案所需的软件数量。VS2022具备我们需要的所有部分,但是我无法通过VS本身构建实际的解决方案。
如果我在路径C:\Program Files\Microsoft Visual Studio\2022\Community\Msbuild\Current\Bin\MSBuild.exe
中使用相应的32位版本的msbuild,则解决方案完全可以构建。然而,C:\Program Files\Microsoft Visual Studio\2022\Community\Msbuild\Current\Bin\amd64\MSBuild.exe
版本(我猜想是VS22使用的版本?)在构建时失败,并出现了与通过VS22相同的错误。
重要的是要注意,我们的解决方案/项目主要基于.net framework 2.0
(不幸的是),并设置为x86
平台。
我一直困扰于以下错误:SGEN:error:尝试加载格式不正确的程序集
,这是针对各种第一方和第三方dll的。我一直在尝试反复更改以下组合:
- 在项目之间改变
x86
和AnyCPU
,但无论项目及其引用的配置如何,错误仍然会出现 - 关闭项目上的
Generate serialization assembly
,因为我在某个地方看到有人通过这样做来成功解决错误。 - 从
4.0
(我们当前的设置)更改到Current
和其他版本的ToolsVersion
如果可能的话,我正在寻找一种强制VS2022使用32位msbuild的方法,因为它可以在不进行任何更改的情况下构建整个解决方案。
我还注意到了以下内容:
Task attempted to find "sgen.exe" using the SdkToolsPath value "". Make sure the SdkToolsPath is set to the correct value and the tool exists in the correct processor specific location below it. (TaskId:109)
4> C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64\sgen.exe
将 SdkToolsPath
设置为32位版本是否可以解决我的问题?我实际上还没有找到在哪里设置这个选项来尝试。
谢谢!
SdkToolsPath
设置为TargetFrameworkSDKToolsDirectory
。我也对SGenToolPath
做了同样的操作,这解决了大部分问题。如果有更好的建议,我会保持开放状态,否则一旦在本地解决了问题,我会在这里更新答案。 - Adam Short