情况:
- 项目1是解决方案中的一个程序集
- 项目2是同一解决方案中的可执行汇编项目
- 项目 2 具有对项目 1 的项目引用(通过添加引用)
- 项目2没有directly代码中引用项目1中的命名空间/类型
- 项目2使用Ninject动态加载项目1并使用其中的实现类
Problem:
- 即使引用的“复制本地”设置为“True”,并且引用的程序集不存在于 GAC 中,引用的程序集仍是not复制到输出构建目录
- Ninject 随后找不到程序集,因此绑定/解析失败
这个过程适用于相同的设置,其中引用的程序集中的某些类被直接引用,并由 Ninject 加载,所以我相信原因如下:如果 VS 检测到引用的程序集中没有类型被引用in code,它不会复制引用的程序集,即使它是使用 Copy Local = True 添加为引用的。
解决方案:
- 找到一种方法告诉 VS,“复制本地(我是认真的)”= True ——这将是我理想的解决方案。
- 添加对引用程序集的文件引用。不太好,因为我失去了项目参考的优势(这可能完全在我的脑海中,也可能不完全在我的脑海中)。
- 在代码中以某种“令牌”方式引用程序集。凌乱 - 我想使用引用列表来维护我想要包含的程序集/模块的列表。
- 复制装配体的构建后步骤。凌乱,不理想。
任何人都可以帮助解决第一个解决方案,或者建议另一个解决方案吗?
如果您部署/复制的应用程序包含对在 GAC 中注册的自定义组件的引用,则无论“复制本地”设置如何,该组件都不会随应用程序一起部署/复制。See MSDN http://msdn.microsoft.com/en-us/library/ez524kew.aspx
您必须通过添加来强制将 local 复制为 truePrivateGAC 程序集参考的元数据。编辑您的项目文件并添加Private元数据:
<Reference ..>
<Private>True</Private>
</Reference ..>
<ProjectReference ..>
<Private>True</Private>
</ProjectReference ..>
现在您的 GAC 程序集应该从输出文件夹中复制/删除。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)