代码之家  ›  专栏  ›  技术社区  ›  M.Hassan

Msbuild v15无法解析nuspec文件的元数据变量

  •  4
  • M.Hassan  · 技术社区  · 7 年前

    我知道自从msbuild15(vs 2017)发布以来,NuGet现在已经完全集成到msbuild中。

    我有一个nuspec文件,其中定义了包属性的变量,如:

        <metadata>
            <id>$id$</id>
            <version>$version$</version>  
            <authors>$authors$</authors>
        ...
        </metadata> 
    

    nuspec文件位于项目的同一文件夹中。

    使用nuget工具创建包时,它工作正常。

        nuget pack   
    

        msbuild -version
    

    15.8.168.64424

        msbuild  /t:pack /p:configuration=release    /p:NuspecFile=mylib.nuspec
    

    引发异常:

    C:\Program Files\dotnet\sdk\2.1.402\Sdks\NuGet.Build.Tasks.Pack\Build\NuGet.Build.Tasks.Pack.targets(199,5):错误:值不能为null或空字符串。

    奇怪的是,dotnetsdkversion2.1.402引发了一个异常。

    我用vs2017安装了msbuild,并尝试了它的路径,它也引发了相同的异常。

    问题

    这是msbuild版本15.8.168.64424中的错误还是我遗漏了什么?

    换句话说,msbuild能否支持使用包的元数据变量?。

    1 回复  |  直到 7 年前
        1
  •  10
  •   Martin Ullrich    7 年前

    正如在注释中提到的,您不再需要Nuspec文件,因为大多数方面都可以通过csproj文件中的属性或项上的附加元数据(例如,如果您需要附加内容)来控制。

    <Target Name="SetNuspecProperties" BeforeTargets="GenerateNuspec">
      <PropertyGroup>
        <NuspecProperties>$(NuspecProperties);id=$(AssemblyName)</NuspecProperties>
        <NuspecProperties>$(NuspecProperties);config=$(Configuration)</NuspecProperties>
        <NuspecProperties>$(NuspecProperties);version=$(PackageVersion)</NuspecProperties>
        <NuspecProperties>$(NuspecProperties);description=$(Description)</NuspecProperties>
        <NuspecProperties>$(NuspecProperties);authors=$(Authors)</NuspecProperties>
      </PropertyGroup>
    </Target>
    
    推荐文章