繁体   English   中英

为什么 MSBuild nuget 包使用版本 15.1.0.0

[英]Why are MSBuild nuget packages using version 15.1.0.0

我有一个大型应用程序,它引用 MSBuild nuget 包,以便它可以打开.csproj 文件。 当我运行我的项目时,它崩溃了,因为它试图引用 MSBuild 15.1.0.0。 这很奇怪,因为我没有任何明确引用此版本的内容,而且我什至在我的 app.config 中添加了重定向,如下所示:

<dependentAssembly>
    <assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-15.1.0.0" newVersion="17.3.1.0" />
</dependentAssembly>

如果我运行我的应用程序,它会在寻找 15.1.0 时崩溃:

在此处输入图像描述

我相信当我构建我的应用程序时,问题的线索显示在 output 中:

13>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2304,5): warning MSB3277: Found conflicts between different versions of "Microsoft.Build.Framework" that could not be resolved.
13>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2304,5): warning MSB3277: There was a conflict between "Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "Microsoft.Build.Framework, Version=17.3.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
13>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2304,5): warning MSB3277:     "Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was chosen because it was primary and "Microsoft.Build.Framework, Version=17.3.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was not.
13>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2304,5): warning MSB3277:     References which depend on "Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" [C:\Users\Owner\.nuget\packages\microsoft.build.framework\17.3.1\ref\net6.0\Microsoft.Build.Framework.dll].
13>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2304,5): warning MSB3277:         C:\Users\Owner\.nuget\packages\microsoft.build.framework\17.3.1\ref\net6.0\Microsoft.Build.Framework.dll
13>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2304,5): warning MSB3277:           Project file item includes which caused reference "C:\Users\Owner\.nuget\packages\microsoft.build.framework\17.3.1\ref\net6.0\Microsoft.Build.Framework.dll".
13>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2304,5): warning MSB3277:             C:\Users\Owner\.nuget\packages\microsoft.build.framework\17.3.1\ref\net6.0\Microsoft.Build.Framework.dll
13>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2304,5): warning MSB3277:     References which depend on "Microsoft.Build.Framework, Version=17.3.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" [].
13>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2304,5): warning MSB3277:         C:\Users\Owner\.nuget\packages\microsoft.build\17.3.1\ref\net6.0\Microsoft.Build.dll
13>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2304,5): warning MSB3277:           Project file item includes which caused reference "C:\Users\Owner\.nuget\packages\microsoft.build\17.3.1\ref\net6.0\Microsoft.Build.dll".
13>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2304,5): warning MSB3277:             C:\Users\Owner\.nuget\packages\microsoft.build\17.3.1\ref\net6.0\Microsoft.Build.dll
13>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2304,5): warning MSB3277:         C:\Users\Owner\.nuget\packages\microsoft.build.utilities.core\17.3.1\ref\net6.0\Microsoft.Build.Utilities.Core.dll
13>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2304,5): warning MSB3277:           Project file item includes which caused reference "C:\Users\Owner\.nuget\packages\microsoft.build.utilities.core\17.3.1\ref\net6.0\Microsoft.Build.Utilities.Core.dll".
13>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2304,5): warning MSB3277:             C:\Users\Owner\.nuget\packages\microsoft.build.utilities.core\17.3.1\ref\net6.0\Microsoft.Build.Utilities.Core.dll
13>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2424,5): warning MSB3836: The explicit binding redirect on "Microsoft.Build.Framework, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" conflicts with an autogenerated binding redirect. Consider removing it from the application configuration file or disabling autogenerated binding redirects. The build will replace it with: "<bindingRedirect oldVersion="0.0.0.0-15.1.0.0" newVersion="15.1.0.0" xmlns="urn:schemas-microsoft-com:asm.v1" />".

尝试修复

我从 app.config 文件中删除了 bindingredirect,该文件在构建时删除了 output window 中显示的警告,但在运行时仍显示以下错误:

在此处输入图像描述

我没有看到通过 nuget 提供的 15.1.0 确切版本,所以我无法将 msbuild 降级到这个确切版本:

在此处输入图像描述

为什么我的应用程序试图引用 Microsoft.Build.Framework 15.1.0.0? 我怎么解决这个问题?

我能够通过将 Nuget package System.ComponentModel.Composition 从 4.7.0 升级到 6.0.0 来解决这个问题。 不知何故,这导致了这些错误,但我不明白为什么要说。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM