2016-09-15 81 views
0

我已经在这个问题上摔跤了几个星期了。我所有的DLL都被正确引用,被设置为Copy Local,并且我可以从我的本地机器构建我的应用程序到我们的构建机器。 “我的本地和构建箱都安装了Azure SDK 2.9,但是在我们的临时环境中运行应用程序后,我们得到.NET程序集未被复制到bin文件夹中

”无法加载文件或程序集“Microsoft.Practices.EnterpriseLibrary.Common,Version = 5.0.505.0 ,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一,系统找不到指定的文件。“

我使我们的分级机上的融合日志,这里是输出:

=== Pre-bind state information === 

LOG:显示名称= Microsoft.Practices.EnterpriseLibrary.Common,版本= 5.0.505.0,文化=中性公钥= 31bf3856ad364e35 (完全指定的) LOG:应用平台=文件:/// F:/ sitesroot/3/ LOG:初始PrivatePath = F:\ sitesroot \ 3 \仓

调用组件:(未知)。

LOG:此绑定在默认加载上下文中启动。 LOG:使用应用程序配置文件:F:\ sitesroot \ 3 \ web.config LOG:使用主机配置文件:D:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet.config LOG:使用机器配置文件从D:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ config \ machine.config。 日志:后策略参考:Microsoft.Practices.EnterpriseLibrary.Common,Version = 5.0.505.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35 LOG:试图下载新的URL文件:/// D:/Windows/Microsoft.NET /Framework64/v4.0.30319/Temporary ASP.NET文件/ public_ [我的DLL] /80b18788/752a457e/Microsoft.Practices.EnterpriseLibrary.Common.DLL。 日志:试图下载新的URL文件:/// D:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/public_ [my DLL] /80b18788/752a457e/Microsoft.Practices.EnterpriseLibrary。通用/ Microsoft.Practices.EnterpriseLibrary.Common.DLL。 日志:试图下载新的URL文件:/// F:/sitesroot/3/bin/Microsoft.Practices.EnterpriseLibrary.Common.DLL。 日志:试图下载新的URL文件:/// F:/sitesroot/3/bin/Microsoft.Practices.EnterpriseLibrary.Common/Microsoft.Practices.EnterpriseLibrary.Common.DLL。 日志:试图下载新的URL文件:/// D:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/public_ [my DLL] /80b18788/752a457e/Microsoft.Practices.EnterpriseLibrary。 Common.EXE。 日志:试图下载新的URL文件:/// D:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/public_ [my DLL] /80b18788/752a457e/Microsoft.Practices.EnterpriseLibrary。通用/ Microsoft.Practices.EnterpriseLibrary.Common.EXE。 日志:试图下载新的URL文件:/// F:/sitesroot/3/bin/Microsoft.Practices.EnterpriseLibrary.Common.EXE。 日志:试图下载新的URL文件:/// F:/sitesroot/3/bin/Microsoft.Practices.EnterpriseLibrary.Common/Microsoft.Practices.EnterpriseLibrary.Common.EXE。

当我到D:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET,该DLL不存在,所以它显然看在这个DLL的“错误”的地方。

我正在使用VS 2013.任何人有任何想法?

编辑:当我从我的本地生成时,我可以确认bin文件夹正在清除之前,重新复制一些DLL回到该文件夹​​。奇怪的是,成功复制到那里的DLL不再在我的代码或配置文件中的任何地方被引用。我也有一个后期构建脚本,但我确认这些旧的DLL并未在那里引用。

第二个编辑:

我发现企业库DLL上的临时实例之一,但它不是在错误指的是目录。我们有一个Web项目,它引用了另一个实际上是Azure Cloud Service的项目。所以看起来该服务的文件夹是在Temporary ASP.NET Files文件夹下创建的,但它是空的。

的DLL是在这里:

d:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \临时ASP.NET文件\ ROOT \ 59a01799 \ 5b6b1a2 \装配\ DL3 \ 11d624d2 \ 4e820e1f_4413d201

我认为“root”是Web应用程序。错误正在寻找此文件夹中:

d:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET文件/ [我的服务类库]/060e4c2a/e3b3457e/

为Microsoft.Practices.EnterpriseLibrary.Common.DLL。我们为引用的Web项目和服务类库都有一个“包”文件夹,它们都包含所有必需的DLL。所以我认为有一种设置可能在服务类库中仍然指向根Web应用程序项目文件夹来查找DLL,我只是无法弄清楚它是什么。

+0

似乎您在暂存环境中缺少MS Enterprise Library,您是否允许安装它? [Microsoft企业库5.0](https://www.microsoft.com/en-us/download/details.aspx?id=15104) – sly

+0

虽然我得到了这个错误的所有我的引用,包括新添加的Redis的SessionStateProvider我们正在将此应用程序转换为。我不相信Redis DLL依赖于正在安装的EL DLL,所以我不认为我看到的Redis引用的错误与EL没有处于分期阶段有关。...... – Ben

+0

检查是否你打这个MSBuild的限制,http://stackoverflow.com/questions/36270073/msbuild-referencedependencypaths-does-not-contain-nth-dependencies –

回答

0

所以问题是,在Web项目中引用的服务库的预生成脚本中,前开发人员编写了一个文件复制程序,以手动将某些DLL复制到bin文件夹。我将这些DLL添加到构建定义和中提琴下的脚本,它工作。

感谢大家的回复。

相关问题