uncategorized

有參照外部元件如何在VSTS建立.Net Core Package

在先前一篇的[用VSTS建立.Net Core的Package],建立屬於.Net Core的Nuget Package,其中在Path to csproj or nuspec file(s) to pack是沒有辦法放.nuspec檔案的,但是,原本在.nuspec有一個標籤可以把外部dll包進Package

1
2
3
<files>
<file src="lib\XXX.dll" target="lib\netstandard2.0" />
</files>

不過,目前VSTS上面那個Dotnet Task無法讀取.nuspec檔案,就導致無法把外部參考的dll一起打包,而在介面上也找不到可以加入的地方。其實,在頁簽上面設定,都會被記錄到csproj檔案中

csproj有下面tag包住的資訊就跟在Package頁簽上面看到是相同的資訊

1
2
3
<PropertyGroup>
....
</PropertyGroup>

既然這樣,那樣也是因該可以在這邊加入我想要的打包外部dll設定才對,畢竟,在這裏面的屬性其實是對應到.nuspec的標籤的,找了半天,最後可以下面語法加入到csproj

1
2
3
4
5
6
<ItemGroup>
<_PackageFiles Include="lib\XXX.dll">
<BuildAction>None</BuildAction>
<PackagePath>lib\netstandard2.0\</PackagePath>
</_PackageFiles>
</ItemGroup>

第一行_PackageFiles是說在專案資料夾中,你把外部的dll放在那個地方,需要去那邊抓到這個dll,第三行PackagePath是把dll放到package內那個地方,就.Net Core來說目前必須放到netstandard2.0資料夾內,所以,就必須設定把dll搬移到這邊

這樣設定好之後,再重新跑一次CI,就可以完美的把外部dll也打包進去了,雖然可以解決目前這問題,最好方法還是可以正常讀取.nuspec檔案