Sub*_*tar 13 c# team-build assembly-resolution
我们使用VS2008 SP1在C#中编码.我们有一个运行Team System Server 2008的服务器,我们将其用于源代码控制,任务等.服务器也是Team Build的构建机器.这已经很好地工作了很长时间.直到目前.当我们尝试构建一个引用一个外部程序集的项目时,我们会收到这些错误消息(通过Team Build,以及物理登录和通过Visual Studio进行常规构建时):
C:\ WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets:警告MSB3246:已解决的文件包含错误的图像,没有元数据或无法访问.无法加载文件或程序集 'C:\ Program Files\Syncfusion\Essential Studio\7.1.0.21\Assemblies\3.5\Syncfusion.XlsIO.Base.dll'或其依赖项之一.该模块应该包含一个程序集清单.
C:\ Program Files\MSBuild\Microsoft\VisualStudio\v9.0\ReportingServices\Microsoft.ReportingServices.targets(24,2):错误MSB4062:无法从程序集Microsoft加载"Microsoft.Reporting.RdlCompile"任务. ReportViewer.Common,Version = 9.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a.无法加载文件或程序集'Microsoft.ReportViewer.Common,Version = 9.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.该模块应该包含一个程序集清单.确认声明是否正确,以及程序集及其所有依赖项是否可用.
找不到引用的组件"Syncfusion.XlsIO.Base".
这些错误适用于一个有问题的程序集引用的项目.当我尝试构建整个解决方案时,由于这个问题,当然会有更多错误.还有另外两个项目与其他程序集引用具有相同的问题.我有一个VS无法解决的引用程序集列表:
Syncfusion程序集来自第三方组件包.另外两个与Microsoft ReportViewer组件有关.
引用已通过"添加引用"窗口添加到.NET选项卡中,因此我认为没有任何可疑之处.在程序集引用的属性窗口中,Culture,Description,Path,Runtime Version或Strong Name中没有值.版本说0.0.0.0,Resolved是False.我猜很明显,VS无法解析引用.我的问题是为什么??? 我在这个问题上摸不着头脑.这只发生在服务器上,解决方案在我的机器和我的同事机器上构建得很好.我们的机器上的装配参考属性很好.
我试图卸载的第三方组件(当然在服务器上),然后然后重新安装.没有帮助.我试图修复与VS2008安装.没有帮助.试图从源代码控制中检索早期版本(我知道之前已在服务器上构建),并且我收到了相同的错误消息.我检查了文件权限,一切似乎都是有序的.我的想法已经不多了......
我该如何解决这个问题?
更新16.02.2009:
我试图在我的电脑和服务器上比较 dll的ildasm输出(参见我写的评论),并且在一行中有一个小的区别,对我来说似乎是一个评论.我必须承认,我不明白为什么会有所不同,所以也许有人可以向我解释一下?
我也尝试在服务器上运行病毒扫描.没有帮助.试图除去的参考,然后重新进行添加通过浏览到磁盘上的DLL它.没工作.
更新17.03.2009:
我找到了解决方案!罪魁祸首是Panda Antivirus的TruPrevent模块.禁用模块后,一切正常!=)
我在fuslogvw.exe及其生成的日志的帮助下发现了这一点.用Google搜索结果,偶然发现了这篇博客文章..希望这可以帮助别人.
几乎可以肯定,问题是环境问题,与来源无关。
一些想法...
(i) 尝试禁用您的防病毒/反恶意软件工具 - 我见过这些工具(特别是趋势科技防病毒软件,出于某种原因)可以在扫描后(期间?)锁定 DLL 文件,从而干扰编译器。
(ii) 检查您的 PATH 环境变量。即使在当今,PATH 变量也用于解决一些问题 - 如果这被搞乱了(太长,最大长度为 2048 个字符 IIRC),那么事情可能会很奇怪。
(iii) 您已检查文件权限 - 您是否检查了注册表中的权限?例如,SyncFusion 在用户和机器配置单元中安装其许可证密钥 - 如果构建服务器无法读取其中之一,可能会导致问题。
祝你好运!