C#在共享项目中使用参考/类库



我刚刚在Visual Studio 2017中学习并创建了一个共享项目。我注意到共享项目没有"参考"来参考其他资源(其他项目,类,类库,…(。我什至看一下.shproj文件,并看到它只是导入我在共享项目中创建的类。

我的问题是,如果我想创建一个加载程序应用程序,我需要使用类库来调用原始软件暴露的必要API。如何将其他项目/类库(或一般资源(引用/添加我的共享项目?还是完全可以的?

我的问题的一部分也在此处描述,请参考其他共享项目的共享项目

,但我需要一个更通用的解决方案。谢谢大家的帮助。

长话短说:共享的项目没有,实际上无法以这种方式工作。

在Visual Studio中,共享项目只是一个用于文件的容器 - 源代码,资源等 - 您可以添加到其他项目中。在某些情况下,当您想在多个项目中拥有相同的代码(等(而无需将该代码放入库中时,这可能很有用。

共享项目没有参考,没有Nuget软件包或任何内容,只有它们所包含的文件。他们甚至没有编译所包含的任何源文件所需的配置数据,如果共享项目未包含在某种形式的完整项目中,则编译器不会对内容进行太多验证。

,由于共享项目没有任何指定参考或软件包的方法,因此您需要将这些参考和软件包添加到链接到共享项目的每个项目中。如果您错过了一个,编译器会很快告诉您。

虽然在共享项目中有参考很不错,但事实证明,它比您想象的要简单得多。相同的共享项目可以包含在针对不同框架,平台和架构的项目中。假设您正在构建一些将在iOS,单声道,Windows .NET框架和.NET Core上运行的代码,并为每个目标和一些共享代码提供特定的代码。如果您尝试在共享项目中添加Nuget依赖性,至少其中一个将在您的脸上炸毁。与大多数参考相同。添加您需要的所有参考。

您需要在消耗共享项目的项目中添加参考。

作为一个例子,假设您的"项目A"为"参考共享项目B",则需要在"共享项目B"中使用newtonsoft.json。由于您无法添加对共享项目的引用,因此您将Newtonsoft Nuget软件包安装到项目A 和您的代码"共享项目B"中将自动编译。

最新更新