我有一个项目(A),将开发一个记录器系统。这个项目将用于其他项目。在项目A中,有两个引用在编译时没有使用。
当我在任何项目中向项目A添加引用时,都不会导入引用,但在运行时需要它们。
我看到了两种解决方案:
( a)使用虚拟代码在编译时强制复制。这个解决方案似乎不雅观。
( b)在其他项目中添加参考资料。此解决方案强制始终引用DLL。
是否有任何办法强制复制引用?
非常感谢
发布于 2015-02-20 10:56:50
尝试更改项目A中指定引用的复制本地属性
编辑作为这种情况的解决方案:
如果您在编译时没有使用这些引用,那么应该添加特定的dll文件(添加现有项),作为Build中的内容,并在项目A中使用Copy选项。当项目A获得生成时,这些文件将是生成输出。通过这种方式,可以从引用项目A的其他项目中访问文件
发布于 2015-02-20 10:51:46
考虑为您的项目制作一个NuGet包。NuGet包可以发布所需的运行时库,并将它们添加到目标项目中(尽管我认为您可能需要使用PowerShell脚本来实现这一点)。
然后,可以在目标项目中使用“管理NuGet引用”来添加“项目A”,并让NuGet安装脚本添加“仅运行时”库引用。
请记住,您可以在内部托管您自己的NuGet包,它们不需要发布到在线库。我们将这种方法用于内部共享项目,因为它使依赖关系管理和版本控制变得非常简单和合理,并在源代码管理的范围内保持每个项目的严格范围。
发布于 2015-02-20 10:57:07
可以在运行时使用反射加载程序集:
Assembly assembly = Assembly.LoadFile(path);
Type t = assembly.GetType("YourClassName");
object instance = Activator.CreateInstance(t);
int parameter1 = 1;
object result = t.GetMethod("The MethodName").Invoke(instance, new object[] { parameter1, "Something" });不过有点麻烦。
https://stackoverflow.com/questions/28627142
复制相似问题