C#在另一个项目中添加对类的引用而不引用该项目

时间:2019-03-04 13:51:47

标签: c# reference

我有两个项目:

  • ProjectMain(类库)
  • LibraryProject(类库)

ProjectMain是一个类库,仅应编译为单个库,而不能引用库。我需要LibraryProject BUT的静态类引用,但我不想将LibraryProject程序集与ProjectMain程序集一起编译。

我已经在Visual Studio中尝试了“链接引用”,但这不是解决方案,因为库程序集总是与主程序集一起编译。

对于此问题有明确的标准解决方案,但是我受到现有实施要求的严重限制。 只有一个DLL可以编译,而在执行文件夹,GAC,私有路径,反射等中没有任何依赖程序集。

确切的限制如下:

  • 在第三方提供商的沙箱中执行的程序集,它仅支持添加没有直接引用/反射等内容的单个程序集(这很可怕,但我的双手被绑住了)
  • 不幸的是,由于上述限制,我们很难做到最好的代码组织,这意味着遵循标准的最佳实践。

我想知道的是,是否有一种方法可以在另一个项目中引用一个类,而又不必编译/使用该引用的类程序集。可能是编译器在编译时“嵌入”所引用类的一种方法。

1 个答案:

答案 0 :(得分:0)

如果您的沙箱不允许在AppDomain中加载其他dll,请通过嵌入将其自己加载。为此,您可以使用Costura.Fody,它易于使用/安装,只需从nuget中引用即可。

当然,将其嵌入每种情况都是疯狂的,并且常常带有完全模糊的错误,这些错误通常只能通过在regedit中启用跟踪才能解决。

因此,在您的情况下,我将创建两个项目:

MyDll.csproj //it is my original project, with perfect code design and etc. Lovely.

MyDll.Sandbox.csproj //this one is the same as MyDll.csproj, except it is compiled with additional Costura.Fody reference, into single dll (every reference is put inside)

这样,您只需要维护MyDll和MyDll.Sandbox文件是相同的即可。