如何在ASP.net应用程序中引用bin文件夹外的程序集?
我有一个用ASP.Net编写的工作XML Web服务。现在我需要引用特定文件夹中的某些程序集,例如如何在ASP.net应用程序中引用bin文件夹外的程序集?,asp.net,assembly-resolution,Asp.net,Assembly Resolution,我有一个用ASP.Net编写的工作XML Web服务。现在我需要引用特定文件夹中的某些程序集,例如c:\NotMyCode 我不想将该文件夹中的无数DLL复制到我的bin文件夹中 我试图为Web服务中引用的程序集保留CopyLocal=false。这导致程序集出现FileNotFound异常。 当我切换到CopyLocal=true时,引用的DLL将复制到bin文件夹中。。它是有效的 所以我的问题是: 如何引用不在bin文件夹或其下的子文件夹中的程序集?我需要在某处更改一些安全策略文件吗?我想我
c:\NotMyCode
我不想将该文件夹中的无数DLL复制到我的bin文件夹中 我试图为Web服务中引用的程序集保留
CopyLocal=false
。这导致程序集出现FileNotFound异常。
当我切换到CopyLocal=true
时,引用的DLL将复制到bin文件夹中。。它是有效的
所以我的问题是:
如何引用不在bin文件夹或其下的子文件夹中的程序集?我需要在某处更改一些安全策略文件吗?我想我不是第一个想做这种事的人。。所以我假设有人已经解决了这个问题
(我尝试在IIS ASP.net配置面板中模拟管理员用户,但也不起作用。)
更新:也无法在GAC中安装它。打个比方,该web服务为第三方应用程序(如Starteam)提供了一个简化视图。我不能(不应该..不想..)将该文件夹中的所有二进制文件复制到bin文件夹或将其安装到GAC中您可以始终将引用的程序集放在GAC中,那么位置就无关紧要了。您可以通过将组件拖动到GAC(C:\windows\assembly)或运行GACUtil.exe来安装该组件 这篇文章可能会有所帮助。它描述了“.”
起初,我认为您可以在web.config的runtime/assemblyBinding中使用
元素,但探测只允许您在根位置下指定子目录。您可以将其放入GAC并从那里访问。我认为您也可以在代码中引用特定的程序集路径
AppDomain.CurrentDomain.AppendPrivatePath("C:\\NotMyCode");
在您的Global.asax应用程序中执行此操作\u Start应该可以做到这一点。根据
应用程序根目录外引用的程序集必须具有强名称,并且必须安装在全局程序集缓存中或使用
元素指定
所以,看来你运气不好。以下是我想尝试的:
linkd SharedCode c:\NotMyCode
。这使得\SharedCode
实际上是c:\NotMyCode
的别名SharedCode
。因为这是在您的应用程序基础下,所以它应该可以工作。或者,使用设置为程序集探测的路径Assemly.Load(Path.Combine(@"c:\NotMyStuff",args.Name.Substring(0, args.Name.IndexOf(",")) + ".dll"))
有关更多信息,请参阅。根据MSDN,AppendPrivatePath已过时:这必须在3.5中出现。。不幸的是,我仍然是2.0。私家车路径。。。。同样的…+1表示偷偷摸摸。。我不知道linkd的事。它设法愚弄了Windows资源管理器,但没有愚弄ASP.Net。ASP.net将二进制文件复制到执行二进制文件的临时位置。奇怪的是,临时位置显示了这些文件-但是FusionLogVw没有显示失败的程序集解析的条目。但服务器会像往常一样使用FileNotFound进行响应…我们可以禁用临时目录的阴影处理。。但我不喜欢JUNCTION解决方案,它就像黑客一样…\n我测试了使用web development server探测它对我来说不起作用-server jest返回内部错误…程序集解析无法帮助服务器在启动过程中失败我遇到了同样的问题,无法找到解决方案!你有没有设法解决这个问题?我正在使用.NET3.5。这似乎是一个类似的错误。好答案?还是最好把它删掉?