在 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" 等问题,以及版本控制带来的所有外围好处。
- 关注点分离,以确保您的库保持通用目的,并且不会以一个应用程序的硬编码内容告终。
- 更容易添加引用(只是一个版本号,和其他任何东西一样)
- 更轻松地与其他团队共享库。
...等等。
简而言之,图书馆也是产品。如果您所在的公司/情况有意义,您可能想像对待它一样对待它。
我正在使用 .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" 等问题,以及版本控制带来的所有外围好处。
- 关注点分离,以确保您的库保持通用目的,并且不会以一个应用程序的硬编码内容告终。
- 更容易添加引用(只是一个版本号,和其他任何东西一样)
- 更轻松地与其他团队共享库。 ...等等。
简而言之,图书馆也是产品。如果您所在的公司/情况有意义,您可能想像对待它一样对待它。