繁体   English   中英

在 Visual Studio 2019 中编辑 .csproj 文件是否安全?

[英]Is it safe to edit .csproj file in Visual Studio 2019?

我们有一个包含多个项目的 C# 解决方案。 我们正在使用 Github 桌面管理解决方案的版本控制,即在 Visual Studio 之外。 在全新安装 Visual Studio 2019 社区版的新机器上将新代码推送到 GitHub 后,当我向解决方案中的 API 项目添加新文件时,我发现该文件被添加到 .csproj 文件中,如下所示,并且 IDE 永远不会在构建、调试、代码完成等过程中包含该文件。

<ItemGroup>
    <Compile Remove="Controllers\TestController.cs" />
</ItemGroup>

我还在解决方案资源管理器中的 TestController 文件旁边看到一个 + 号。 将鼠标悬停在 + 号上会显示“待添加”消息。

为什么会这样? 删除 .csproj 文件中的这个项目组块是否安全? 对于添加到项目中的新文件,有没有办法防止这种行为?

细节

语境:

包含 5 个项目的 C# 解决方案 - (1) WebAPI、(2) 身份、(3) 数据访问、(4) 服务、(5) 共享库。 使用 Visual Studio 2019 社区版进行编辑。

完整时间表:

  1. 使用 GitHub 桌面从 GitHub.com 中提取的解决方案
  2. 使用 Visual Studio 添加到 DataAccess 和 Services 项目的文件。 一切都很好
  3. 在 GitHub 桌面中创建的新分支。 使用 GitHub 桌面将新文件添加到分支并使用 GitHub 桌面推送到 GitHub.com
  4. 代码由项目管理员与父分支合并
  5. 本地解决方案使用 GitHub 桌面同步到远程存储库

--- 警报:现在发现问题---

  1. 使用 Visual Studio 添加到 API 项目的新文件 (TestController)。 此文件不会成为构建的一部分。 IDE 不会突出显示 ApiControllers、ControllerBase 等,也不会指示拼写错误的服务的错误,在 ApiControllers 上按 F11 会给出错误消息“无法导航到插入符号下的符号”。
  2. 谷歌搜索建议检查 .csproj 文件。 在这里,我发现新文件位于 'compile remove' 块内。

在 Visual Studio 2019 中编辑 .csproj 文件是否安全?

如果你知道你在做什么并且你做对了,当然。 否则,没有那么多。

为什么会这样? 删除 .csproj 文件中的这个项目组块是否安全? 对于添加到项目中的新文件,有没有办法防止这种行为?

之所以发生这种情况,是因为 Visual Studio 没有作为该项目的一部分出现在项目子目录中的文件。 因此,它添加了<Compile Remove... />元素以将其作为项目的一部分从编译中排除。 删除该元素是安全的,但根据我的经验,它只会再次出现。

作为一般规则,您不应将文件添加到由 Visual Studio 管理的项目目录,除非使用 Visual Studio UI 本身。 从您的帖子中不清楚您为什么要这样做。 您显然要向其中添加文件的目录是您的项目目录。 它应该只包含实际上属于该项目的文件。

最好的解决方法是当文件不应该是该项目的一部分时,不要尝试将它们添加到项目目录中。

您可能有XY 问题 如果您可以发布一个新问题来解释您添加不属于的文件的场景,并寻求指导以完成您拥有的任何更广泛的目标,但又不违反 Visual Studio 的规则,你可能会得到比“不要那样做”更好的答案。

我想我已经确定了问题所在。 我相信发生的事情是,一旦将本地分支推送到远程,即使我没有在 Visual Studio 中正式跟踪项目,使用 Visual Studio 对项目所做的进一步更改也不会集成到项目中。

git status 显示我仍然在我最初的本地分支上。 我做了以下与远程父分支同步,然后启动一个新的本地分支:

git stash
git checkout <parent_branch>
git pull
git checkout -b <new_branch>

这将我切换到一个新分支,现在我可以像往常一样编辑文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM