簡體   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