我有几个项目有Nuget引用Microsoft.AspNet.WebApi.Core(我的每个REST服务都是一个单独的项目)。现在,如果只是创造和建造,这一切都在游泳。但是,当有人从我们的源代码控制中提取此解决方案时,他们显然不会获得任何Nuget包,二进制文件或对象文件夹。这就是问题所在......
提供干净的解决方案时,对System.Web.Http.dll(来自Microsoft.AspNet.WebApi.Core)的引用不正确。似乎Visual Studio只是忽略了之前引用的内容并搜索替换内容。期望这个程序集的每个项目通常都会指向Nuget引入的项目。但他们都指出:
C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Web.Http.dll
因此,如果Nuget软件包已恢复,则此程序集保持不变,因此会破坏构建。查看项目文件,我发现:
<Reference Include="System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\lib\nuget\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>
<Private>True</Private>
</Reference>
这是100%正确,这是我想要的程序集。那我为什么不明白呢?或者更好的问题是,为什么Nuget在恢复期间没有用正确的引用替换错误的引用?