MSBuild/XBuild关于$(ProjectName)的差异?

MSBuild/XBuild关于$(ProjectName)的差异?,msbuild,mono,xbuild,Msbuild,Mono,Xbuild,我正在尝试为Windows/Mono定义一个跨平台构建项目。在版本模式下编译时,构建过程的一部分会创建nuget包 以下是我的“后构建”目标: $(临时) 努吉\ nuget\$(项目名称).nuspec 这在MSBuild/Windows中非常有效,但在Mono下,失败,因为$(ProjectName)为空。MSBuild/XBuild之间处理生成脚本变量的方式是否存在根本性差异 尝试手动添加回退值,例如下面的MyFallback.Project.Name MyFallback.Proj

我正在尝试为Windows/Mono定义一个跨平台构建项目。在版本模式下编译时,构建过程的一部分会创建nuget包

以下是我的“后构建”目标:


$(临时)
努吉\
nuget\$(项目名称).nuspec

这在MSBuild/Windows中非常有效,但在Mono下,失败,因为
$(ProjectName)为空
。MSBuild/XBuild之间处理生成脚本变量的方式是否存在根本性差异

尝试手动添加回退值,例如下面的
MyFallback.Project.Name


MyFallback.Project.Name
直接运行
msbuild
已经成功了,并且通过Mac上的Xamarin Studio修复了该建筑。

Mmmh。我们发现:
  <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>