我有两个项目:
ProjectMain是一个类库,仅应编译为单个库,而不能引用库。我需要LibraryProject BUT的静态类引用,但我不想将LibraryProject程序集与ProjectMain程序集一起编译。
我已经在Visual Studio中尝试了“链接引用”,但这不是解决方案,因为库程序集总是与主程序集一起编译。
对于此问题有明确的标准解决方案,但是我受到现有实施要求的严重限制。 只有一个DLL可以编译,而在执行文件夹,GAC,私有路径,反射等中没有任何依赖程序集。
确切的限制如下:
我想知道的是,是否有一种方法可以在另一个项目中引用一个类,而又不必编译/使用该引用的类程序集。可能是编译器在编译时“嵌入”所引用类的一种方法。
答案 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文件是相同的即可。