引用由第三方可执行文件在构建过程中创建的DLL

问题描述 投票:1回答:2

我有一个必须引用并调用DLL的项目,该DLL是在每次触发构建时通过执行第三方可执行文件而创建的。 (从JAR文件创建的代理DLL,以允许从C#中调用Java代码。使用proxygen中的jni4net完成,但这并不重要。JAR文件可能会不时更改,但是其调用界面保持不变)。我还需要从DLL中的类实例化一个对象,然后在该对象上调用方法。

我有两种思路:

1)作为同一项目中的预构建步骤运行。但这意味着我必须在存储库中包含一个DLL,并将该DLL添加为对项目的引用,以便C#知道我的调用是有效的。这意味着我的存储库中将有一个“陈旧”的DLL,并且每次触发构建时,SCM都会将其检测为已更改。

2)创建一个虚拟DLL项目,例如使用伪C#文件,然后在生成后的步骤中执行该程序,以使用实际DLL覆盖伪DLL。然后,我可以将其添加为普通项目依赖项。然后,我将不得不在C#中为稍后在“真实” DLL中的实际调用实现虚拟调用,以便其他项目不会抱怨这些调用。但我不必在存储库中包含陈旧的DLL。

是否有更好,更优雅的解决方案?

c# dll visual-studio-2015
2个回答
1
投票

使用Assembly.LoadFrom方法加载。应该可以!


1
投票

由于您的第三方程序集是.NET,所以您可以将其放置在源代码存储库之外,并使用Assembly.LoadFrom method动态加载。之后,您可以使用GetTypes method

从加载的程序集中列出类型
© www.soinside.com 2019 - 2024. All rights reserved.