2011-04-21 27 views
1

我在位于网络共享上的项目中有文件引用。这在所有开发人员机器上都没有问题。TFS2010构建自动化无法找到网络共享上的参考

当我试图执行一个自动生成,生成失败引错误CS0246:类型或命名空间名称“大会”找不到...

参考(\服务器\ \引用共享\ Release \ Assembly.dll)可被服务器发现,并且构建服务帐户已修改文件夹(和程序集)的权限。

项目定义包含一个有效的hintpath标记到\ server \ References \ Shared \ Release \,并且我已经向MSBuild Arguments属性添加了/ p:ReferencePath =“\ server \ References \ Shared \ Release”认为这些设置应该是必要的)。

有没有人有任何其他建议?

这是从构建失败日志片段:

ResolveAssemblyReferences: 
    Primary reference "DataLayer". 
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): warning MSB3245: Could not resolve this reference. Could not locate the assembly "DataLayer". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [C:\Builds\1\APPNAME\APPNAME\6\Sources\APPNAME.Logger\APPNAME.Logger.csproj] 
      For SearchPath "\\SERVERNAME\References\Shared 2.0\Release". 
      Considered "\\SERVERNAME\References\Shared 2.0\Release\DataLayer.dll", but it didn't exist. 
      Considered "\\SERVERNAME\References\Shared 2.0\Release\DataLayer.exe", but it didn't exist. 
      For SearchPath "{HintPathFromItem}". 
      Considered "\\SERVERNAME\c$\References\Shared 2.5\Release\DataLayer.dll", but it didn't exist. 
      For SearchPath "{TargetFrameworkDirectory}". 
      Considered "C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\DataLayer.dll", but it didn't exist. 
      Considered "C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\DataLayer.exe", but it didn't exist. 
      Considered "C:\Windows\Microsoft.NET\Framework\v3.5\DataLayer.dll", but it didn't exist. 
      Considered "C:\Windows\Microsoft.NET\Framework\v3.5\DataLayer.exe", but it didn't exist. 
      Considered "C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\DataLayer.dll", but it didn't exist. 
      Considered "C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\DataLayer.exe", but it didn't exist. 
      Considered "C:\Windows\Microsoft.NET\Framework\v3.0\DataLayer.dll", but it didn't exist. 
      Considered "C:\Windows\Microsoft.NET\Framework\v3.0\DataLayer.exe", but it didn't exist. 
      Considered "C:\Windows\Microsoft.NET\Framework\v2.0.50727\DataLayer.dll", but it didn't exist. 
      Considered "C:\Windows\Microsoft.NET\Framework\v2.0.50727\DataLayer.exe", but it didn't exist. 
      For SearchPath "{Registry:Software\Microsoft\.NETFramework,v3.5,AssemblyFoldersEx}". 
      Considered "C:\Program Files\Reference Assemblies\Microsoft\VSTA\v9.0\DataLayer.dll", but it didn't exist. 
      Considered "C:\Program Files\Reference Assemblies\Microsoft\VSTA\v9.0\DataLayer.exe", but it didn't exist. 
      Considered "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\DataLayer.dll", but it didn't exist. 
      Considered "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\DataLayer.exe", but it didn't exist. 
      Considered "C:\Program Files\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\DataLayer.dll", but it didn't exist. 
      Considered "C:\Program Files\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\DataLayer.exe", but it didn't exist. 
      Considered "C:\Program Files\Microsoft Chart Controls\Assemblies\DataLayer.dll", but it didn't exist. 
      Considered "C:\Program Files\Microsoft Chart Controls\Assemblies\DataLayer.exe", but it didn't exist. 
      For SearchPath "{AssemblyFolders}". 
      Considered "C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\DataLayer.dll", but it didn't exist. 
      Considered "C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\DataLayer.exe", but it didn't exist. 
      Considered "C:\Program Files\Microsoft.NET\ADOMD.NET\100\DataLayer.dll", but it didn't exist. 
      Considered "C:\Program Files\Microsoft.NET\ADOMD.NET\100\DataLayer.exe", but it didn't exist. 
      Considered "C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\DataLayer.dll", but it didn't exist. 
      Considered "C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\DataLayer.exe", but it didn't exist. 
      Considered "C:\Program Files\Microsoft SQL Server\100\DTS\Tasks\DataLayer.dll", but it didn't exist. 
      Considered "C:\Program Files\Microsoft SQL Server\100\DTS\Tasks\DataLayer.exe", but it didn't exist. 
      Considered "C:\Program Files\Microsoft SQL Server\100\DTS\PipelineComponents\DataLayer.dll", but it didn't exist. 
      Considered "C:\Program Files\Microsoft SQL Server\100\DTS\PipelineComponents\DataLayer.exe", but it didn't exist. 
      Considered "C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\DataLayer.dll", but it didn't exist. 
      Considered "C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\DataLayer.exe", but it didn't exist. 
      Considered "C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\DataLayer.dll", but it didn't exist. 
      Considered "C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\DataLayer.exe", but it didn't exist. 
      Considered "C:\Program Files\Microsoft SQL Server\100\DTS\ForEachEnumerators\DataLayer.dll", but it didn't exist. 
      Considered "C:\Program Files\Microsoft SQL Server\100\DTS\ForEachEnumerators\DataLayer.exe", but it didn't exist. 
      For SearchPath "{GAC}". 
      Considered "DataLayer", which was not found in the GAC. 
      For SearchPath "{RawFileName}". 
      Considered treating "DataLayer, Version=2.5.0.0, Culture=neutral, PublicKeyToken=22db5dc9ded3fd82, processorArchitecture=MSIL" as a file name, but it didn't exist. 
      For SearchPath "C:\Builds\1\APPNAME\APPNAME\6\Binaries\". 
      Considered "C:\Builds\1\APPNAME\APPNAME\6\Binaries\DataLayer.dll", but it didn't exist. 
      Considered "C:\Builds\1\APPNAME\APPNAME\6\Binaries\DataLayer.exe", but it didn't exist. 

DataLoyer.dll definatley在\服务器存在\ \参考共享2.0 \发布。

+0

在日志中,您应该能够看到msbuild如何查找引用,您可以查看(并提供)这部分日志吗? – 2011-05-03 14:01:04

+0

添加了日志文件片段。 – 2011-05-13 11:33:06

+0

被视为“\ SERVERNAME \ c $ \ References \ Shared 2.5 \ Release \ DataLayer.dll”,但它不存在。它不应该是\\ SERVERNAME而不是\ SERVERNAME? – 2011-05-13 20:22:16

回答

0

我建议检查到版本控制的DLL,这样它可以与您的源代码一起版本化,该程序集将在您的工作区,以便您不会有网络安全问题。

+1

虽然我同意你的观点,但以这种方式引用DLL是我目前无法解决的问题。 MSBuild必须能够做到这一点? – 2011-05-03 09:04:36

2

我有一个类似的问题,即在命令行上使用Visual Studio和MSBuild构建会成功,但在Jenkins之内使用相同的MSBuild调用构建会失败。由于MSBuild无法解析某些第三方DLL(特别是它们是Telerik controls)安装到C:\Program Files(而不是GAC),构建失败。

我拍成的MSBuild的详细程度时,它的工作,并注意到它搜索的正确路径分辨率步下的第一个条目当家:

For SearchPath "{Registry:Software\Microsoft\.NETFramework,v4.0,AssemblyFoldersEx}" 

我去在注册表中HKEY_CURRENT_USER\Software\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx挖掘和发现一个Telerik二进制文件夹的入口。由于Jenkins作为SYSTEM用户下的服务运行,我认为它没有触及此注册表位置,因此我将条目复制到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx

这样做。不知道这是多么好还是不好,或者如果有另一种方法来解决它,但它对我来说很好。

相关问题