Pet*_*ter 4 msbuild tfs .net-core
我正在/t:packTFS-Build中创建一个nuget-package 。我不能使用Nuget-Pack-Step,因为我正在使用
<TargetFramework>netstandard2.0</TargetFramework>
Run Code Online (Sandbox Code Playgroud)
如何AssemblyVersion在Nuget包装上使用我的产品?因为我的Assembly-Version是正确的,但是我的Nuget版本始终保持不变1.0.0.0。
注意我正在使用C#文件而不是该.csproj文件作为我的程序集信息。
有没有可能?
想分享那个链接。
使用当前版本的 MSBuild,可以指定PackageVersion参数:
msbuild ProjectName.csproj -t:Pack -p:PackageVersion=1.2.3
Run Code Online (Sandbox Code Playgroud)
集成了MSBuild的Pack目标从项目内部的MSBuild属性中读取其值(PackageVersion具体而言,默认为Version,默认为VersionPrefix,后继为VersionSuffix)。
从新的程序集属性读取此值具有开箱即用的支持,因为新项目格式旨在从确定NuGet包元数据的同一配置中生成这些程序集属性。
但是,您可以通过以下方式扩展构建:将自定义目标添加到csproj文件中,该文件在以下过程中读取已构建程序集的标识msbuild /t:Pack:
<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>
Run Code Online (Sandbox Code Playgroud)
请注意,此目标将仅msbuild.exe在Windows(Visual Studio开发人员命令提示符)或Linux / Mac上的mono 5.2+ 的“完整MSBuild”上运行。当前不适用于dotnet pack(.NET Core版本的MSBuild)。
| 归档时间: |
|
| 查看次数: |
1204 次 |
| 最近记录: |