我在运行时使用WPF项目中的Microsoft.Build框架构建项目。在我的app.config中,我指定了以下组装绑定:
<dependentAssembly>
<assemblyIdentity name="Microsoft.Build" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Build.Utilities.Core" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Build.Framework" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Build.Tasks.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Build.Engine" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0" />
</dependentAssembly>以下引用在我的项目文件(.csproj)中:
<Reference Include="Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Build.15.5.179\lib\net46\Microsoft.Build.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Build.Framework.15.5.179\lib\net46\Microsoft.Build.Framework.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Build.Tasks.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Build.Tasks.Core.15.5.179\lib\net46\Microsoft.Build.Tasks.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Build.Utilities.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Build.Utilities.Core.15.5.179\lib\net46\Microsoft.Build.Utilities.Core.dll</HintPath>
<Private>True</Private>
</Reference>NuGet版本的Microsoft.Build包是15.5.179。在运行和调试项目时,这很好。我安装的软件包是:
但是,我在解决方案中添加了安装向导(.vdproj),当Microsoft.Build.*检测到的依赖项显示为15.1.0.0版本时,当我构建可执行文件时,安装并运行我的应用程序,将得到以下错误:
Could not load file or assembly 'Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. 我错过了什么..?
更新:
有趣的是,安装的应用程序目录中的MSBuild dll的版本为15.5.179 -- NuGet版本。
“我的项目”中的“引用”选项卡包含对以下版本15.1.0.0的4个引用:
发布于 2020-04-10 14:21:40
更新Nuget工具安装程序的版本为我解决了这个问题。Microsoft依赖项中似乎存在版本冲突。问题消失了,现在构建成功了。
在Azure Build Pipeline > NuGet tool installer步骤中,将Version of NuGet.exe to install更改为较新的版本,如5.4.0。
查看Nuget的最新ReleasedAndBlessed版本在https://dist.nuget.org/tools.json。
https://stackoverflow.com/questions/49259033
复制相似问题