在 vscode 上添加参考 .net 核心 Web api 项目

adding reference .net core web api project on vscode

我正在使用 .Net Core 目标框架在 vscode 上开发一个 WebApi 项目。我有这样的场景,代码的某些部分 (数据库交互和通用工具) 将成为许多其他独立项目的一部分,而不是这个特定的 WebApi 项目。所以我决定把它作为另一个项目单独编码在另一个文件夹中..

但是我不知道我要怎么做。无论是作为项目参考还是作为依赖项的输出文件,都没关系,我不知道在第一个..我基本上只是想构建一个与 .net core 兼容的库,并在许多其他 .net core 项目中使用它。

我需要一些指南和最佳实践建议。

更新:

我想我已经找到了一种方法,而且它现在似乎有效。

1- 添加 <ProjectRefence> 到 FirstProject.csproj 文件:

<ProjectReference Include="..\SecondProject\SecondProject.csproj"></ProjectReference>

2- 将 project.json 文件添加到 FirstProject 并为 SecondProject 设置依赖项。

{
    "dependencies": {
        "SecondProject": {
            "target": "project"            
        }
    }
}

3- dotnet restore 并构建。

4- 重新启动 vscode 以获得正确的智能。


2020 年更新

当我问这个问题时,我对 VS Code 环境太陌生了。我期待一些 IDE 功能来相互引用项目。

根据您的 OS / IDE / .Net Core 版本,您可能需要也可能不需要 CSPROJ 更新。我认为您需要它们与 .Net Core 2+ / VS17+ 以及可能的其他一些工具组合一起出现。

您可能需要扩展您的 dependencies 块。我发现基于OS和IDE,有时我需要专门调出一些依赖;他们并不总是传递过来。例如,我在引用另一个项目时得到了这样的块,以进行编译:

"dependencies": { "Microsoft.NETCore.App": { "version": "1.1.0", "type": "platform" }, "NETStandard.Library": "1.6.1", ... "OtherProjectNameHere": { "target": "project" } },

您的特定依赖集会有所不同。

您可能还需要本着类似的精神对 frameworks 块进行调整。

您可以考虑的更严格的选择是将您的库 /SecondProject 放入其自己的存储库中,并将其作为 NuGet 包使用。如果这是一个你要在多个项目或多个团队中使用的库,你可能会受益于包引用而不是项目引用。你会收获:

  • 您的库的版本号,以便您可以更轻松地回答 "are my changes to that library included in my build of this app" 等问题,以及版本控制带来的所有外围好处。
  • 关注点分离,以确保您的库保持通用目的,并且不会以一个应用程序的硬编码内容告终。
  • 更容易添加引用(只是一个版本号,和其他任何东西一样)
  • 更轻松地与其他团队共享库。 ...等等。

简而言之,图书馆也是产品。如果您所在的公司/情况有意义,您可能想像对待它一样对待它。