我對當前任務有兩個目標;自動增加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))) 」。我確切知道爲什麼多虧了你現在的解釋。 –