我试图为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之间处理构建脚本变量的方式是否存在根本差异?
发布于 2016-09-13 15:57:03
尝试手动添加一个回退值,如下面的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已经开始工作了,并且通过Mac上的Xamarin修复了这个构建。
https://stackoverflow.com/questions/36907970
复制相似问题