Asp.net-Core
.net 核心 (csproj) global.json ‘projects’ 等效項
使用 .net core (project.json),我曾經通過將原始碼的路徑添加到 global.json 中的
projects欄位來在 nuget 包和原始碼之間切換。在我這樣做之後,它將添加它可以在該路徑中找到的所有項目,這些項目可以替換我引用的 nuget 包。我經常使用此功能,因為我有自己使用的 nuget 包,但我想在發布之前測試其他項目中的更改。但是一旦我切換到 Sdk 1.0.0/VS 2017/csproj .net 核心,該功能似乎就消失了。
另一種方法是手動添加每個項目,手動切換引用(因為它們被分解為項目、nuget 和 sdk 引用),然後將其全部切換回來。
任何想法或建議都會很棒。
更新: 聽起來在 csproj 中沒有等效項(如預期的那樣),但目前有 msbuild 解決方法(從最初的 VS 2017/.NET Core SDK 1.0.0 版本開始)
是的,我也已經習慣了這個功能,並圍繞它建構了我的工作流程。我仍在尋找解決方案,但我目前正在考慮在 csproj 文件中使用條件邏輯的想法。由於現在是 msbuild,您可以執行以下操作:
<Choose> <When Condition="Exists('..\..\..\MyProject')"> <ItemGroup> <ProjectReference Include="..\..\..\MyProject\src\MyProject\MyProject.csproj" /> </ItemGroup> </When> <Otherwise> <ItemGroup> <PackageReference Include="MyProject" Version="1.0.0" /> </ItemGroup> </Otherwise> </Choose>如果可以找到原始碼(在本例中為目錄),則使用項目引用的條件替換對包的硬引用,如果找不到,則使用包引用。
因此,預設情況下,您將引用包,但如果您想調試您的項目之一,您可以在條件檢查的位置將其簽出,並將項目添加到您的解決方案中。
這樣,您只需在想要包含原始碼時更改解決方案文件(通過添加項目),而不是重新連接所有項目引用。