关于 $(ProjectName) 的 MSBuild / XBuild 差异?
MSBuild / XBuild differences regarding $(ProjectName)?
我正在尝试为 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 之间构建脚本变量的处理方式是否存在根本差异?
尝试手动添加后备值,例如下面的 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 Studio 在 Mac.
上的固定构建
我正在尝试为 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 之间构建脚本变量的处理方式是否存在根本差异?
尝试手动添加后备值,例如下面的 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 Studio 在 Mac.