cae*_*say 5 .net c# reflection .net-assembly visual-studio-2013
我有一个完全填充了在另一个程序集中实现接口的类的程序集.例如:
Main Assembly (Reference to both assemblies)
Shared Assembly
-----IModule 
Class Assembly (Reference to shared assembly)
-----unknownType : IModule
-----unknownType2 : IModule
主程序集没有直接引用类程序集中的任何类型.我正在寻找类似的类型:
// Load all referenced assemblies:
Assembly.GetExecutingAssembly().GetReferencedAssemblies()
    .Except(AppDomain.CurrentDomain.GetAssemblies().Select(a => a.GetName()))
    .Distinct()
    .ToList()
    .ForEach(act => Assembly.Load(act));
// Find all instances of IModule in loaded assemblies:
var modules = from asm in AppDomain.CurrentDomain.GetAssemblies()
   from provider in asm.GetTypes()
   where typeof(IModule).IsAssignableFrom(provider)
   ...instantiate type etc...
如果我在类程序集中只引用了一个任意类型,那么它会显示在GetReferencedAssemblies中,被加载并正确返回 - 但是一旦我删除对该类型的引用,它就不会被转移到构建目录或显示为引用的程序集导致加载失败.
有没有办法强制VS将此程序集包含在输出目录中?主应用程序不应该知道类程序集中的任何类型.
Mic*_*ann -1
我想我明白你的问题,但是你能澄清一下你的问题吗?您是否希望将作为项目引用添加的程序集与应用程序一起复制到输出文件夹中?你是如何添加参考的?它是您在文件对话框中浏览到的 .dll 或 .exe,还是您从“添加引用”对话框的列表中选取的 COM 或 GAC 程序集?
如果您浏览到它,并且它不在 GAC 目录中,则这种优化是预期的。在解决方案资源管理器中选择您的引用,并确保属性窗口中的“复制本地”设置为 true。即使是这样,您也可以尝试切换此设置。您的 .vsproj 文件可能只需要重建以包含引用。
如果您尝试从存储在字符串中或在运行时选择的文件名引用 .dll,则 Visual Studio 将无法知道您的应用程序正在使用它,但仍会将其复制到输出目录。不过,如果您有 .dll 的路径,那么使用 File.Copy 执行此操作应该不会太难。
| 归档时间: | 
 | 
| 查看次数: | 290 次 | 
| 最近记录: |