SyntaxHighlighter

2021-09-13

在多個專案中同時設定依賴專案版本

如果你像我在做Blazor的披薩工作坊時,執行build卻發生像下面的錯誤:

warning NU1604: Project dependency 'PackageA' (<= 9.0.0) does not contain an inclusive lower bound. Include a lower bound in the dependency version to ensure consistent restore results.

很好,第一步你找對地方了。這是一個msbuild的問題,也是這個工作坊內容的一個小問題。
這個專案中牽扯到了nuget包裝版本問題。而通常我們在github等上傳資料時,並不會包含nuget引用的封包(可以自己抓的就不要浪費網路流量啦)。

基本上專案用的方法並沒有錯,他只是少傳了一個檔案。在這個檔案中,我們可以將多個proj所需的最低版本放到同一個檔案中集中管理,這樣升級的時候就不需要一個一個去打開專案檔修改參考版本。

你所需要做的動作如下:
1. 在Solution檔案夾下放一個共通的檔案。如果你像我常常使用VSCode,那就是把檔案放在sln檔的同一個目錄中。在標準設定中,他會被叫做Directory.Build.props
2. 修改檔案內容,改成像下面這樣:
<Project>
<PropertyGroup Label="Package Dependencies">
<AspNetCoreVersion>5.0</AspNetCoreVersion>
<EntityFrameworkVersion>5.0</EntityFrameworkVersion>
<BlazorVersion>5.0</BlazorVersion>
<SystemNetHttpJsonVersion>5.0</SystemNetHttpJsonVersion>
</PropertyGroup>
</Project>
3. 如果你是用dotnet cli或是Visual Studio,恭喜你,你已經可以正常build了。
如果你不是使用標準build。那你就繼續做下一步。
4. 打開你的各個專案檔(就是那些csproj檔)。在<Project>的最上層添加下面這行
<import Project="..\Directory.Build.props" />
5. 結束。這樣應該又恢復正常了。未來有升級的時候,自己進去修改所需最低nuget的版本,看是要改成6.0還是什麼的,就看大家造詣了。

ref: https://github.com/dotnet-presentations/blazor-workshop

keyword: asp.net, dependencies.props, Directory.Build.props, .net core

人気の投稿