2016-04-28 11 views
1

Ich versuche ein Cross-Plattform-Build-Projekt für Windows/Mono zu definieren. Ein Teil des Build-Prozesses erstellt Nugget-Pakete beim Kompilieren im Freigabemodus.

Hier ist meine "Afterbuild" Ziel:

<Target Name="AfterBuild" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <PropertyGroup> 
     <LocalPackagesDir Condition=" '$(LocalPackagesDir)' == '' ">$(TEMP)</LocalPackagesDir> 
     <OutputPackageDir>nuget\</OutputPackageDir> 
     <NuspecFile>nuget\$(ProjectName).nuspec</NuspecFile> 
    </PropertyGroup> 

    <Message Importance="High" Text="Building nuget package: $(NuspecFile) ..." /> 
    <Exec Command="nuget pack $(NuspecFile) -OutputDirectory $(OutputPackageDir)" /> 

    <ItemGroup> 
     <BuiltPackage Include="nuget\**\$(ProjectName)*.nupkg" /> 
    </ItemGroup> 

    <Message Importance="High" Text="Copying nuget package: @(BuiltPackage) in local packages repository: $(LocalPackagesDir) ..." /> 
    <Copy SourceFiles="@(BuiltPackage)" DestinationFolder="$(LocalPackagesDir)" /> 
    </Target> 

Das funktioniert perfekt mit MSBuild/Windows-aber nicht unter Mono weil $(ProjectName) is empty. Gibt es grundlegende Unterschiede in der Art, in der Buildskriptvariablen zwischen MSBuild/XBuild behandelt werden?

+1

Mmmh. Folgendes gefunden: https://bugzilla.xamarin.com/show_bug.cgi?id=21521 –

Antwort

1

Versuchen Sie, manuell einen Fallback-Wert hinzuzufügen, z. B. MyFallback.Project.Name.

<?xml version="1.0" encoding="utf-8"?> 
<Project> 
    <PropertyGroup> 
     <ProjectName Condition=" '$(ProjectName)' == '' ">MyFallback.Project.Name</ProjectName> 
    </PropertyGroup> 
    <!-- The rest of the file... --> 
</Project> 

Lauf msbuild direkt bereits gearbeitet, und das feste Gebäude durch Xamarin Studio auf dem Mac.