2016-04-28 3 views
1

Я пытаюсь определить проект сборки кросс-платформы для Windows/Mono. Часть процесса сборки создает пакеты nuget при компиляции в режиме выпуска.

Вот мой "AfterBuild" Цель:

<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> 

Это отлично работает с MSBuild/Windows, но терпит неудачу под Mono, потому что $(ProjectName) is empty. Существуют ли принципиальные отличия в том, как обрабатываются переменные скрипта сценария между MSBuild/XBuild?

+1

Mmmh. Найдено: https://bugzilla.xamarin.com/show_bug.cgi?id=21521 –

ответ

1

Попробуйте добавить резервное значение вручную, например 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> 

Запуск msbuild непосредственно уже работал, и это постоянное здание через Xamarin студии на Mac.

Смежные вопросы