Microsoft.Web.Infrastructure没有构建到我的一个TFS构建服务器上的bin目录中

Vic*_*rra 6 c# asp.net tfs gac build

这是我的错误:http://i.imgur.com/hWm3Ta2.png通过在成功构建之后将"Microsoft.Web.Infrastructure.dll"删除到我的项目bin目录中来解决它.

我有一个相同的项目在一个构建服务器上工作而不是另一个.我的问题是,在一个构建服务器上我的项目的bin目录中缺少"Microsoft.Web.Infrastructure.dll",而在构建项目后没有另一个目录.Microsoft.Web.Infrastructure引用将其"Copy Local"属性设置为"True".

两个构建服务器都具有TFS和IIS,可用于快速测试/部署.显然问题出在构建服务器端,但我所有的研究都没有帮助我找到解决方案.

从我的构建日志中发现了更详细的错误:

主要参考"Microsoft.Web.Infrastructure,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL".c:\ WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9):警告MSB3245:无法解析此引用.无法找到程序集"Microsoft.Web.Infrastructure,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL".检查以确保磁盘上存在程序集.如果您的代码需要此引用,则可能会出现编译错误.

然后在这个错误后,我得到了一个巨大的地方列表,它看起来试图找到DLL但不能.我认为修复就像在任何一个地方丢弃DLL一样简单,但我不能帮助但感觉就像用胶带修复它.在我的/ packages /文件夹中,我清楚地看到"packages\Microsoft.Web.Infrastructure.1.0.0.0 \"目录,但是没有lib,也没有DLL.它似乎没有建造.

Tho*_*fer 7

我们遇到了类似的问题.从VS构建和部署工作但不是从我们的构建机器与msbuild.exe.Microsoft.Web.Infrastructure.dll尚未复制到输出目录,即使构建协议显示该文件位于packages目录中并由msbuild识别.原因是有点腐败的.csproj文件.该项目已从VS2015更新至VS2017.一切顺利.根据VS2017中的UI,参考"Microsoft.Web.Infrastructure"的设置"本地副本"设置为true.但是:当使用文本编辑器查看基础.csproj文件时,我们发现缺少两行:

<Reference Include="Microsoft.Web.Infrastructure, ...>
<HintPath>..\packages\...\Microsoft.Web.Infrastructure.dll</HintPath>
<EmbedInteropTypes>False</EmbedInteropTypes>  <-- this line was missing
<Private>True</Private>  <-- this line was missing
</Reference>
Run Code Online (Sandbox Code Playgroud)

特别是<Private>-tag是至关重要的,因为这意味着"本地复制".只需在VS中将"Local Copy"设置为false,即可保存,然后重新设置为true即可治愈.神奇的是,两条缺失的线条都会出现并且msbuild,你会很高兴.


小智 0

您的解决方案是否可能正在寻找版本 1.0.0.0,而实际上您的项目中引用了不同的版本?