簡體   English   中英

避免添加 nuget 包引用以支持程序集引用的可能性,包括。 依賴?

[英]Possibility to avoid adding nuget package reference in favor of assembly reference incl. dependencies?

有沒有辦法避免 nuget 包引用以簡化開發人員機器上的開發?

我們目前正准備將“共享”解決方案中的一些項目移動到新的csproj 文件結構(使用<Project Sdk="Microsoft.NET.Sdk"> )並使用<TargetFramework>netstandard2.0</TargetFramework>

通過這樣做,我們必須包含<PackageReference Include="System.Text.Encodings.Web" Version="4.7.0" />並更改我們共享解決方案的項目“ S ”中的一些代碼。

在另一個解決方案后端,我們有多個項目。 其中一些通過使用對S.dll程序集引用來引用項目S的程序集, S.dll所示:

<Reference Include="ournamespace.S">
   <HintPath>..\..\artifacts\Shared\ournamespace.S\ournamespace.S.dll</HintPath>
</Reference>

當我們構建時,一切正常。 但是,當從后端解決方案運行我們的 Web 應用程序W 時,我們會收到此異常:

System.IO.FileNotFoundException: Could not load file or assembly 'System.Text.Encodings.Web, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified.

我們將共享項目遷移到“新 SDK”項目文件格式之前,在使用 .netstandard2.0(我們使用的是 .net framework 4.7.2)之前以及在我們將包引用切換到 System.Text.Encodings.Web 之前(我們使用的是<PackageReference Include="AntiXSS" Version="4.3.0" /> ) 我們沒有收到任何錯誤。

我能想到的唯一方法是我們需要從S.dll 的程序集引用切換到使用 nuget - 以獲得S依賴項。

然而,為我們的共享解決方案項目使用 nuget 包並在后端項目中開發將成為一場噩夢,因為我們需要在每次S更改時創建一個新的 nuget 包(並發布它),並且需要增加包引用中的版本號一直在后端項目中。 此外,這將變得非常不切實際,因為我們的開發人員也在使用各種 git 功能分支(考慮版本沖突;必須發布未完成的包,並且可能使用版本后綴“alpha_”+{branchName} 來區分此版本來自的分支) .

如何在本地主機上開發? 有沒有辦法避免 nuget(但正確解析其依賴項!)?

我已經在閱讀有關通過在 csproj 文件中使用條件對 CI 構建使用 nuget 包引用時為本地開發提供程序集引用的內容(但是,這在 VS2017 中也不能很好地工作;這也無法解決我們編寫的依賴問題的問題)以上在本地主機上)

還有哪些其他可能性? 有沒有最好的方法來處理這個問題?

提前致謝!

PS 我不想將S的依賴項包含到每個引用S的項目中,也就是在那里使用包引用。 這不會是一個解決方案,並且當S可能出於任何原因獲得新的依賴項時會變得更加麻煩。

<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

解決了我的問題(有關詳細信息,請參閱如何獲取 .NET Core 項目以復制 NuGet 引用以構建輸出?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM