MSBuild를 통합 Pack
타겟 (차례 차례로 VersionSuffix
접미사 될 수 VersionPrefix
디폴트로 Version
에서 디폴트 인 것으로 특정 PackageVersion
) 프로젝트 내부의 MSBuild 특성으로부터 그 값을 판독한다.
새 프로젝트 형식은 NuGet 패키지 메타 데이터를 결정하는 동일한 구성에서 이러한 어셈블리 특성을 생성하기 때문에 어셈블리 특성에서이 값을 읽는 즉시 사용할 수있는 지원이 있습니다.
그러나, 당신은 csproj의 msbuild /t:Pack
동안 내장 조립의 신원을 읽고 파일에 사용자 지정 대상을 추가하여 빌드를 확장 할 수 있습니다 :이 대상은 "전체 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의 경우 Visual Studio 개발자 명령 프롬프트 인 msbuild.exe
이거나 Linux/Mac의 경우 mono 5.2+입니다. 현재 dotnet pack
(.NET Core 버전의 MSBuild)에서는 작동하지 않습니다.
https://github.com/lextm/sharpsnmplib/blob/10.0.2/SharpSnmpLib/SharpSnmpLib.csproj#L26 패키지 버전은 프로젝트의 버전 태그에서 가져온 것이므로 수정해야합니다. –
csproj-file 대신 AssemblyInfo.cs를 사용하고 있습니다. 그러나 나는 그것에 상응하는 것을 찾을 수 없다. [어셈블리 : AssemblyVersion ("4.0.0.0")처럼 sth이어야합니다. – Peter
"있어야"하지만 아직 없습니다. 원한다면'.nuspec'을 사용할 수 있습니다 (그 트릭을 사용하는 프로젝트를 가지고 있기 때문에). –