有没有办法在 Visual Studio Code 中使用共享项目(shproj)?

Posted

技术标签:

【中文标题】有没有办法在 Visual Studio Code 中使用共享项目(shproj)?【英文标题】:Is there a way to use shared projects (shproj) in Visual Studio Code? 【发布时间】:2018-01-23 19:54:19 【问题描述】:

你好,

共享项目似乎是在 .NET Core 2.0 Web 项目和 .NET 4.7 WinForms 项目之间共享代码的好主意。 我里面有一堆扩展以及两个项目都使用的 web api 客户端代码。

在 Visual Studio 2017 中一切正常。

但是,在路上我使用带有 Visual Studio Code 的 MacBook 计算机,它无法以任何方式识别 shproj。我还尝试了带有新的多个工作区的 Insider 版本,但这似乎也只适用于实际项目 (csproj)。 我知道有适用于 Mac 的 Visual Studio,但它非常庞大,远远超出了我在路上的需求,所以我想避免它。

所以,我的问题是 - 有没有办法将 Visual Studio Code 用于使用共享项目 (shproj) 的项目? 我想在 VSCode 中运行/调试这样的项目。

如果没有,在某处创建功能请求是否有意义?我的意思是,共享项目是为跨平台代码共享而设计的,而 VSCode 是出色的跨平台编辑器,因此很有意义。 或者这根本不是 VSCode 的一部分,而是一些扩展(如 OmniSharp)?

谢谢, 马里奥

【问题讨论】:

【参考方案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)

    在 Console Application 项目中使用 Shared Project 的新类

    运行控制台应用程序以检查它是否成功构建和使用共享类。

    关闭 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 部分
<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) 兼容。

【讨论】:

以上是关于有没有办法在 Visual Studio Code 中使用共享项目(shproj)?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 Visual Studio Code 中使用共享项目(shproj)?

有没有办法在Visual Studio Code中设置环境变量?

有没有办法从 Visual Studio Code 调试 Tomcat Java 应用程序

有没有办法改善 Visual Studio Code 中突出显示的 linting 错误?

有没有办法让 Visual Studio Code 识别 PHP 文件中的 HTML 语法

如何编辑 Visual Studio Code 的默认深色主题?