Mic*_*tum 27 .net asp.net assemblies
我有两个程序集,通过条件编译(dev和real)创建.
这些组件的公共表面是100%相同的:两者都有很强的名字; 两者都签署相同.snk,因此具有相同PublicKeyToken; 两者都有相同的文化和相同的版本.我无法改变这一点:使它们看起来完全相同是重点.
但是,在我的机器上,真正的程序集在GAC中.我有一个引用开发组件的ASP.NET 3.5 WebForms应用程序.绝对必须这样做; 真正的程序集崩溃了应用程序.
有没有办法强制特定的ASP.NET应用程序使用dev one(在...中/bin),给定:
Version和PublicKeyToken.我注意到有人已经在#991293中询问了这个问题,但接受的答案涉及删除签名,这不是一个选项.
我运气不好吗?
可能,但是它是高级的,需要您了解CLR及其工作方式和C ++。
看看这本Google图书:自定义Microsoft®.NET Framework公共语言运行时
关键字:IHostAssemblyManager,IHostAssemblyStore
我找到了另一种方法。它仅适用于开发人员,但它确实有效。根据https://msdn.microsoft.com/en-us/library/cskzh7h6(v=vs.100).aspx 您在 .config 文件中设置了此内容
<configuration>
<runtime>
<developmentMode developerInstallation="true"/>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
您还需要将环境变量 DEVPATH 设置为 dll 的路径。打开 cmd,设置变量,运行您的应用程序:
SET DEVPATH=YOURLOCALPATH
Run Code Online (Sandbox Code Playgroud)
由于 Oracle 发布了新版本,这帮助我加载本地 Oracle.ManagedDataAccess.dll,但它们都具有相同的 Version 和 PublicKeyToken。谢谢甲骨文!
您可以使用 Microsoft 的 Process Explorer 来查看差异。请参阅https://technet.microsoft.com/en-us/sysinternals/
将其视为一个小的概念证明:

| 归档时间: |
|
| 查看次数: |
18722 次 |
| 最近记录: |