MSBuildの集積Pack
ターゲットは(順番に順番にVersionSuffix
サフィックスもよいVersionPrefix
にデフォルト設定されVersion
からデフォルト設定され、具体的にPackageVersion
)プロジェクト内のMSBuildのプロパティから値を読み出します。
新しいプロジェクト形式は、NuGetパッケージのメタデータを決定するのと同じ構成からこれらのアセンブリ属性を生成するため、この値をアセンブリ属性から読み取るための既定のサポートがあります。
ただし、msbuild /t:Pack
中に組み込まれてアセンブリのIDを読み取っcsprojファイルにカスタムターゲットを追加することで、ビルドを拡張することができます。このターゲットは唯一の「フルMSBuildの」上で動作することを
<Project>
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateNuspecDependsOn>$(GenerateNuspecDependsOn);ReadPackageVersionFromOutputAssembly</GenerateNuspecDependsOn>
</PropertyGroup>
<Target Name="ReadPackageVersionFromOutputAssembly" DependsOnTargets="Build">
<GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
<Output TaskParameter="Assemblies" ItemName="PackAssembly" />
</GetAssemblyIdentity>
<PropertyGroup>
<PackageVersion>%(PackAssembly.Version)</PackageVersion>
</PropertyGroup>
</Target>
</Project>
は注意、 Windows上でmsbuild.exe
(ビジュアルスタジオ開発者コマンドプロンプト)またはlinux/Macのmono 5.2+です。これは現在、dotnet pack
(MSBuildの.NETコアバージョン)では機能しません。
https://github.com/lextm/sharpsnmplib/blob/10.0.2/SharpSnmpLib/SharpSnmpLib.csproj#L26パッケージのバージョンはプロジェクトの「Version」タグに由来しているため、修正する必要があります。 –
私はcsproj-fileの代わりにAssemblyInfo.csを使用しています。しかし、私はそれに相当するものを見つけることができません。 [アセンブリ:AssemblyVersion( "4.0.0.0"))のようにsthする必要があります。 – Peter
"あるはずですが"まだありません。あなたが(私はそのトリックを使用しているプロジェクトを持っているので)望むなら、あなたは '.nuspec'を使用することができます。 –