嗨,
在.NET Core 2.0 Web项目和.NET 4.7 WinForms项目之间共享代码似乎是一个好主意。 我内部有一堆扩展以及两个项目都使用的web api客户端代码。
在Visual Studio 2017中,一切都运行良好。
但是,在路上我使用MacBook电脑和Visual Studio Code,它无法以任何方式识别shproj。我也尝试使用新的多工作空间的Insider版本,但这似乎也适用于实际项目(csproj) 我知道有适用于Mac的Visual Studio,但它非常庞大,远远超出了我的路上需求,所以我想避免它。
所以,我的问题是 - 有没有办法将Visual Studio Code与使用共享项目(shproj)的项目一起使用? 我想在VSCode中运行/调试这样的项目。
如果没有,在某处创建功能请求是否有意义?我的意思是,共享项目是为跨平台代码共享而设计的,VSCode是精彩的跨平台编辑器,所以它是有道理的。 或者这不是VSCode的一部分,而是一些扩展(如OmniSharp)?
谢谢, 马里奥
答案 0 :(得分:1)
至少现在(2021 年)它似乎工作正常。
TLDR;使用 Visual Studio (2019) 创建一个新项目并将“共享项目”添加到该项目/解决方案。然后在 Visual Studio Code 中打开项目文件夹,并将 Shared Project 文件夹添加到 Workspace。在 VS Code 中,将一个新类添加到共享项目并调整 *.projiitems 文件以在编译过程中包含新类。在 VS Code 和 VS 中运行项目以验证一切正常。
以下是我使用的步骤。看起来很多,但设置这个基本示例只需要大约 10 分钟。
打开 Visual Studio (2019)
创建一个新的“控制台应用程序 (.NET Core)”,为其指定名称和位置,然后选择 "Place solution and project in the same directory"
。
创建项目后,您应该在“解决方案资源管理器”中有一个包含新控制台应用程序项目的新解决方案。
右键单击解决方案并选择 "Add" > "New Project..."
选择并添加一个新的“共享项目”
向您的共享项目添加一个新类。在“解决方案资源管理器”中右键单击共享项目并选择 "Add" > "New Item..."
并选择“类”模板。
在您的“控制台应用程序”中,右键单击您的控制台应用程序项目,添加对共享项目的引用,然后选择 "Add" > "Shared Project Reference..."
并选择列出的共享项目 (*.shproj)
在控制台应用程序项目中使用共享项目的新类
运行控制台应用程序以检查它是否成功构建和使用共享类。
关闭 Visual Studio (2019)
打开 Visual Studio 代码
选择 "File" > "Open Folder"
并选择放置控制台应用程序的文件夹。
注意:如果 VS Code 显示一条消息“需要构建的资产并且...丢失”,则选择“是”。
选择 "File" > "Add Folder to Workspace..."
并选择共享项目所在的文件夹。
选择 "File" > "Save Workspace As..."
并将文件保存到控制台应用程序的项目文件夹中。
在 VS Code 中打开一个新的集成终端(在菜单 "Terminal" > "New Terminal"
中)并确保当前工作目录是控制台应用程序的文件夹。然后输入 "dotnet clean && dotnet run"
来清理、构建和运行解决方案。
假设我们现在想从 Visual Studio Code 向共享项目添加一个新类,我们必须做一些额外的工作,通常 Visual Studio (2019) 在添加新类时会为我们做。
在 VS Code 中,右键单击共享类所在的文件夹并添加一个新文件。给它一个带有 .cs 扩展名的名称,并将相应的代码添加到文件中,使其成为有效的类文件。
打开 *.projiitems 文件,找到您的第一个类文件已经添加的部分。它应该是这样的:
<ItemGroup>
<Compile Include="$(MSBuildThisFileDirectory)SharedClass1.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="$(MSBuildThisFileDirectory)SharedClass1.cs" />
<Compile Include="$(MSBuildThisFileDirectory)SharedClass2.cs" />
</ItemGroup>
"dotnet run"
。
检查一切是否按预期构建和运行。如果您发现它构建成功,但 VS Code 显示一些错误,例如“命名空间 'SharedProject1' 中不存在类型或命名空间名称 'Class2'”,则重新启动 VS Code。重新启动后,它应该能够按预期检测到所有内容。
双击 *.sln 文件关闭 VS Code 并打开 VS (2019)。
构建并运行项目以验证所有更改都与 VS (2019) 兼容。