繁体   English   中英

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

[英]C# Using references/class library in a shared project

我刚刚在Visual Studio 2017中学习并创建了一个共享项目。我注意到该共享项目没有引用其他资源(其他项目,类库等)的“参考”。 我什至看一下.shproj文件,发现它仅导入我在共享项目中创建的类。

我的问题是,如果要创建外接程序,则需要使用类库来调用原始软件公开的必要API。 如何将其他项目/类库(或一般资源)引用/添加到共享项目中? 还是完全有可能?

我的问题的一部分也在此处描述,该引用来自其他共享项目中的一个共享项目

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

长话短说:共享项目不行,实际上不能那样做。

在Visual Studio中,共享项目只是文件的容器-源代码,资源等,您可以将其添加到其他项目中。 在某些情况下,如果您想在多个项目中使用相同的代码而不将这些代码放入库中,那么这可能会很有用。

共享项目没有引用,没有NuGet包或任何东西,只有它们包含的文件。 它们甚至不具备编译包含的任何源文件所需的配置数据,并且如果共享项目未包含在某种完整项目中,则编译器将不会对内容进行太多验证。

而且由于共享项目没有任何指定引用或程序包的方式,因此您需要将这些引用和程序包添加到链接到共享项目的每个项目中。 如果您错过了,编译器会很快告诉您。

虽然在共享项目中有引用会很好,但事实却比您想象的要简单得多。 同一共享项目可以包含在针对不同框架,平台和体系结构的项目中。 假设您要构建一些将在iOS,Mono,Windows .NET Framework和.NET Core上运行的代码,并为每个目标提供特定的代码,并提供一些共享代码。 如果您尝试将NuGet依赖项添加到共享项目中,那么至少其中之一将在您的面前大张旗鼓。 与大多数参考文献相同。 添加您需要的所有.NET Core引用,突然其他项目无法编译。

您需要在使用共享项目的项目中添加引用。

例如,假设您有一个引用了“共享项目B”的“项目A”,并且需要在“共享项目B”中使用Newtonsoft.Json。 由于无法添加对共享项目的引用,因此将Newtonsoft Nuget软件包安装到项目A,并且“共享项目B”中的代码将自动编译。

暂无
暂无

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

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