简体   繁体   中英

Why are MSBuild nuget packages using version 15.1.0.0

I have a large application which references MSBuild nuget packages so that it can open.csproj files. When I run my project it crashes because it is attempting to reference MSBuild 15.1.0.0. This is strange because I don't have anything explicitly referencing this version, and I've even added redirects in my app.config as shown here:

<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>

If I run my app, it crashes looking for 15.1.0:

在此处输入图像描述

I believe the clue to the problem is shown in the output when I build my app:

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" />".

Attempted Fixes

I removed the bindingredirect from the app.config file which removes the warning shown in the output window when building, but the following error is still shown at runtime:

在此处输入图像描述

I don't see a 15.1.0 exact version available through nuget so I haven't been able to downgrade msbuild to this exact version:

在此处输入图像描述

Why is my app attempting to reference Microsoft.Build.Framework 15.1.0.0? How can I solve this problem?

I was able to solve this by upgrading the Nuget package System.ComponentModel.Composition from 4.7.0 to 6.0.0. Somehow this was causing these errors but I don't understand enough to say why.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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