繁体   English   中英

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

[英]C# Adding a reference to a class in another project without referencing the project

我有两个项目:

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

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

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

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

确切的限制如下:

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

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

如果您的沙箱不允许在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文件是相同的即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM