在vscode

时间:2017-07-28 23:10:52

标签: c# asp.net-web-api visual-studio-code .net-core projects-and-solutions

我正在使用.Net Core目标框架在vscode上开发一个WebApi项目。我有这种情况,代码(db interaction和common utils)的某些部分将成为许多其他独立的项目,而不是这个特定的WebApi项目。所以我决定将它作为另一个项目在另一个文件夹中单独编码..

然而我无法弄清楚我将如何做到这一点。无论是作为项目引用还是作为依赖项的输出文件,都无关紧要,我无法想出在第一个项目中使用第二个项目..我只是想构建一个与.net核心兼容的库,并在许多其他.net核心项目中使用它。

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

更新:

我想我找到了一种方式,现在似乎正在起作用.. 但我仍然想知道其他更好的选择而不是这个。

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

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

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

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

3- dotnet restore并构建。

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

1 个答案:

答案 0 :(得分:1)

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

您可能需要展开{​​{1}}块。我发现基于操作系统和IDE,有时我需要专门调出一些依赖项;他们并不总是过渡性的。例如,在引用另一个项目时,我最终得到了这样的块,以便编译:

dependencies

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

您可能还需要以类似的精神对"dependencies": { "Microsoft.NETCore.App": { "version": "1.1.0", "type": "platform" }, "NETStandard.Library": "1.6.1", ... "OtherProjectNameHere": { "target": "project" } }, 块进行调整。

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

  • 您图书馆的版本号,以便您可以更轻松地回答诸如“我对此应用内容中包含的库的更改”以及版本控制带来的所有外围优势等问题。
  • 关注点分离,以确保您的图书馆保持一般用途,并且最终不会为一个应用程序提供硬编码的内容。
  • 更容易添加引用(只是版本号,就像其他任何内容一样)
  • 更轻松地与其他团队共享图书馆。 ......还有更多。

简而言之,图书馆也是产品。如果您处于有意义的公司/情况中,您可能希望将其视为一个。