我对当前任务有两个目标;自动增加Nuget软件包版本的,复制将生成的.nupkg文件复制到新建的文件夹中。当我使用MSBuild属性函数时,不能将nuget文件复制到目的地
随着<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
我的.csproj文件中,我试图用一个动态方法(的MSBuild属性函数),以增加我的组装版本的版本号。而不是静态定义<version>1.0.0</version>
我能够创建像这样动态的东西; <version>$([System.DateTime]::Now.ToString("yyyy.MM.dd"))</version>
。这会在bin/debug文件夹内创建一个名为projectName.2017.7.26.nupkg的文件。
此过程生成一个文件,但它会在msbuild构建过程中导致同步问题。在第二阶段,当我尝试将文件复制到目标,我得到的错误:无法复制该文件的“bin \调试\ projectName.2017.07.26.nupkg”,因为它没有发现
出现此错误后半秒钟,Nuget软件包文件出现在bin \ debug文件夹中,并具有相同的名称。
如果我不使用$([System.DateTime]::Now.ToString("yyyy.MM.dd"))
但使用静态版本号如1.0.101
,一切正常,文件被复制到目标文件夹。
这是从我的csproj文件中的相关部分:
<PropertyGroup>
<NewVersionNumber>$([System.DateTime]::Now.ToString("yyyy.MM.dd"))</NewVersionNumber>
<CopyDestionationPath>..\Nuget</CopyDestionationPath>
</PropertyGroup>
<PropertyGroup>
<TargetFrameworks>netcoreapp1.0;net46;net40</TargetFrameworks>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<PackageId>$(AssemblyName)</PackageId>
<version>$(NewVersionNumber)</version>
<title>A Package</title>
.....
</PropertyGroup>
.....
<Target Name="CopyPackage" AfterTargets="Pack">
<ItemGroup>
<OldNugetFiles Include="$(CopyDestionationPath)\*nupkg" />
</ItemGroup>
<ItemGroup>
<NewNugetFile Include="$(OutputPath)$(PackageId).$(PackageVersion).nupkg" />
</ItemGroup>
<Delete Files="@(OldNugetFiles)" />
<Copy SourceFiles="@(NewNugetFile)" DestinationFolder="$(CopyDestionationPath)"/>
</Target>
我需要的东西在AfterTargets CopyPackage任务否则,目前它的设置预先定义的包的目标是什么?
是的,这是正确的,谢谢!我很幸运,发现它是在我昨天离开工作之前的格式化时刻完成的,我尝试了这个并开始工作,然后认为它与格式有关。 ' $([System.DateTime] :: Now.ToString(“dd”)) $([System.string] :: Concat(“1.0.0。”,$(Days))) ”。我确切知道为什么多亏了你现在的解释。 –