在Visual Studio 2017中引用项目

时间:2017-06-23 17:14:01

标签: c# visual-studio visual-studio-2017 csproj

我对VS 2017如何计算项目参考感到困惑。这是使用新的csproj文件格式。

我有一个解决方案,其中包含许多相关的类库项目。这些项目使用我写过的其他通用库。反过来,这些通用库中的一些利用其他库。从概念上讲,结构如下:

班级图书馆A - >使用支持库SL1 - >使用支持库SL1a - >使用支持库X

班级图书馆B =>使用支持库SL2 - >使用支持库SL2a - >使用支持库Y

关键是,类库A和类库B都不直接使用支持库X或Y.

然而,如果我没有专门包括X& S库在解决方案中,我得到解析器错误,抱怨在我尝试编译类库A或B时无法找到库X或Y中定义的对象。

我认为csproj文件会处理所有这些,指示VS 2017如何找到支持库X& X的源代码。 Y(它们全部可以在我的本地文件系统上访问,而csproj文件中的路径都使用绝对路径)。

显然,我错过了一些东西。当然,为图书馆X& amp;的项目添加特定参考资料并不是什么大不了的事。是的。但是我想明白为什么我必须这样做。

这是来自典型类库A的csproj文件的摘录,它引用了DatabaseJobFramework:

  <ItemGroup>
    <ProjectReference Include="C:\Programming\WebJobs\src\DatabaseJobFramework\DatabaseJobFramework.csproj" />
    <ProjectReference Include="C:\Programming\CampaignSystem\src\CampaignDb\CampaignDb.csproj" />
    <ProjectReference Include="C:\Programming\CampaignSystem\src\CampaignMessaging\CampaignMessaging.csproj" />
  </ItemGroup>

这是DatabaseJobFramework.csproj的摘录,这是一个典型的支持库SL1:

  <ItemGroup>
    <ProjectReference Include="C:\Programming\WebJobs\src\ImportFramework\ImportFramework.csproj" />
    <ProjectReference Include="C:\Programming\WebJobs\src\JobFramework\JobFramework.csproj" />
    <ProjectReference Include="C:\Programming\WebJobs\src\JobMessaging\JobMessaging.csproj" />
  </ItemGroup>

这是ImportFramework.csproj的摘录,这是一个典型的支持库SL1a:

  <ItemGroup>
    <ProjectReference Include="C:\Programming\UtilityLibraries\src\SpecializedCollections\SpecializedCollections.csproj" />
    <ProjectReference Include="C:\Programming\UtilityLibraries\src\SystemUtils\SystemUtils.csproj" />
    <ProjectReference Include="C:\Programming\DataLibraries\src\dBaseIII\dBaseIII.csproj" />
  </ItemGroup>

SystemUtils,一个典型的库X,不依赖于我编写的任何代码;它的所有引用都是系统库(例如,Microsoft.CSharp,System)

其他信息

我使用的解决方法涉及将对项目X(类库X;我的示例中的SystemUtils)的引用添加到解决方案中,即使它已在类库SL1a的csproj文件中引用(ImportFramework,in我的例子。)

换句话说,为什么我必须在解决方案中明确包含SystemUtils,即使我已经在解决方案中包含了ImportFramework,并且&gt;&gt;它&lt;&lt;&lt; csproj文件包含对SystemUtils的引用?

0 个答案:

没有答案