我们使用VS2008 SP1以C#编码。我们有一个运行Team System Server 2008的服务器,用于源代码控制、任务等。该服务器也是我们的Team Build构建机。这一直很好运作,但现在出了问题。我们尝试构建一个引用了一个外部程序集的项目时,会收到错误消息(这在通过Team Build进行构建和通过Visual Studio进行常规构建时都会发生)。请注意保留"{{"和"}}"和html标签。
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.ReportViewer.Common,Version=9.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 中加载“Microsoft.Reporting.RdlCompile”任务。无法加载文件或程序集 'Microsoft.ReportViewer.Common,Version=9.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或它的某一个依赖项。该模块应包含一个程序集清单。 确认声明是否正确,并且程序集及其所有依赖项是否可用。
所引用的组件“Syncfusion.XlsIO.Base”找不到。
这些错误是针对一个带有问题的程序集引用的项目。当我尝试构建整个解决方案时,由于这个错误,当然会有更多的错误。还有另外两个项目也存在同样的问题,只是涉及其他程序集引用。我有一份无法解析的 VS 引用程序集列表:
我尝试卸载服务器上的第三方组件,然后重新安装,没有帮助。我尝试修复VS2008安装,也没有帮助。我尝试从源代码控制中检索早期版本(我知道以前已在服务器上构建),结果收到相同的错误消息。我已经检查了文件权限,一切似乎都很正常。我已经没有更多的想法了...如何解决这个问题?
更新16.02.2009: 我尝试比较我的PC和服务器上dll的ildasm输出(请参见我写的评论),并且有一行略微不同,但对我来说似乎是注释。我必须承认我不明白为什么会有任何差异,所以也许有人可以向我解释一下?我还尝试在服务器上运行病毒扫描,没有帮助。试图删除引用,然后通过浏览磁盘上的dll来重新添加它,但没有成功。 更新于2009年3月17日:
我找到了解决方案!罪魁祸首是Panda Antivirus的TruPrevent模块。禁用该模块后,一切都正常了!=)
通过fuslogvw.exe和它生成的日志,我发现了这个问题。搜索结果,偶然发现了这篇博客文章。希望这能帮助其他人。
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.ReportViewer.Common,Version=9.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 中加载“Microsoft.Reporting.RdlCompile”任务。无法加载文件或程序集 'Microsoft.ReportViewer.Common,Version=9.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或它的某一个依赖项。该模块应包含一个程序集清单。 确认声明是否正确,并且程序集及其所有依赖项是否可用。
所引用的组件“Syncfusion.XlsIO.Base”找不到。
这些错误是针对一个带有问题的程序集引用的项目。当我尝试构建整个解决方案时,由于这个错误,当然会有更多的错误。还有另外两个项目也存在同样的问题,只是涉及其他程序集引用。我有一份无法解析的 VS 引用程序集列表:
- Microsoft.ReportViewer.Common
- Microsoft.ReportViewer.WinForms
- Syncfusion.Compression.Base
- Syncfusion.Core
- Syncfusion.XlsIO.Base
我尝试卸载服务器上的第三方组件,然后重新安装,没有帮助。我尝试修复VS2008安装,也没有帮助。我尝试从源代码控制中检索早期版本(我知道以前已在服务器上构建),结果收到相同的错误消息。我已经检查了文件权限,一切似乎都很正常。我已经没有更多的想法了...如何解决这个问题?
更新16.02.2009: 我尝试比较我的PC和服务器上dll的ildasm输出(请参见我写的评论),并且有一行略微不同,但对我来说似乎是注释。我必须承认我不明白为什么会有任何差异,所以也许有人可以向我解释一下?我还尝试在服务器上运行病毒扫描,没有帮助。试图删除引用,然后通过浏览磁盘上的dll来重新添加它,但没有成功。 更新于2009年3月17日:
我找到了解决方案!罪魁祸首是Panda Antivirus的TruPrevent模块。禁用该模块后,一切都正常了!=)
通过fuslogvw.exe和它生成的日志,我发现了这个问题。搜索结果,偶然发现了这篇博客文章。希望这能帮助其他人。