Asp.net-Core

.net 核心 (csproj) global.json ‘projects’ 等效項

  • May 5, 2017

使用 .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>

如果可以找到原始碼(在本例中為目錄),則使用項目引用的條件替換對包的硬引用,如果找不到,則使用包引用。

因此,預設情況下,您將引用包,但如果您想調試您的項目之一,您可以在條件檢查的位置將其簽出,並將項目添加到您的解決方案中。

這樣,您只需在想要包含原始碼時更改解決方案文件(通過添加項目),而不是重新連接所有項目引用。

引用自:https://stackoverflow.com/questions/42773815