我刚刚在Visual Studio 2017中学习并创建了一个共享项目。我注意到该共享项目没有引用其他资源(其他项目,类库等)的“参考”。我什至查看了.shproj文件,发现它仅导入我在共享项目中创建的类。
我的问题是,如果要创建外接程序,则需要使用类库来调用原始软件公开的必要API。 如何将其他项目/类库(或一般资源)引用/添加到共享项目中?还是完全有可能?
reference to a shared project from other shared project
也描述了部分问题但是我需要一个更通用的解决方案。谢谢大家的帮助。
答案 0 :(得分:2)
长话短说:共享项目不会,实际上不能那样工作。
在Visual Studio中,共享项目只是文件的容器-源代码,资源等,您可以将其添加到其他项目中。在某些情况下,如果您想在多个项目中使用相同的代码而不将这些代码放入库中,则在某些情况下会很有用。
共享项目没有引用,没有NuGet包或任何东西,只有它们包含的文件。它们甚至没有编译包含的任何源文件所需的配置数据,并且如果共享项目未包含在某种完整项目中,则编译器将不会对内容进行太多验证。
并且由于共享项目没有任何指定引用或程序包的方式,因此您需要将这些引用和程序包添加到链接到共享项目的每个项目中。如果您错过了一个,编译器会很快告诉您。
虽然在共享项目中有引用会很好,但是事实却比您想象的要简单得多。同一共享项目可以包含在针对不同框架,平台和体系结构的项目中。假设您要构建一些将在iOS,Mono,Windows .NET Framework和.NET Core上运行的代码,并为每个目标提供特定的代码,并提供一些共享代码。如果您尝试将NuGet依赖项添加到共享项目中,那么至少其中之一将在您的面前大张旗鼓。与大多数参考文献相同。添加您需要的所有.NET Core引用,突然其他项目无法编译。
答案 1 :(得分:1)
您需要在使用共享项目的项目中添加引用。
作为一个例子,假设您有一个引用了“共享项目B”的“项目A”,并且需要在“共享项目B”中使用Newtonsoft.Json。由于无法添加对共享项目的引用,因此可以将Newtonsoft Nuget软件包安装到 Project A 中,并且“ Shared Project B”中的代码将自动编译。