代码之家  ›  专栏  ›  技术社区  ›  Josh Mc

捆绑在teamcity中的Nuget软件包未安装文档文件

  •  0
  • Josh Mc  · 技术社区  · 7 年前

    所以基本上我是通过一个在TeamCity中构建nuget包的。运行“包”目标的项目文件:

      <MSBuild 
        Projects="$(MSBuildProjectDirectory)\PROJNAME.csproj"
        Targets="Rebuild;pack"
        Properties="Configuration=$(Configuration);Version=$(BUILD_NUMBER)" />
    

    工件输出为:

    PROJNAME\bin\Release\PROJNAME.%build.number%.nupkg
    

    这对于nuget包的基本使用非常有效,但是我在让文档xml文件正常工作时遇到了困难。

    我查看了输出nupkg,发现文档xml实际上是捆绑在一起的,并包含在包中,但问题是,当我最终在我的消费项目中恢复nuget包时,dll会按预期复制,而文档却没有。

    doc included in nuget package

    我想知道这是否是因为生成了TC。nuspec文件,如果我可能需要放弃teamcities nuspec并创建自己的,但是我希望避免这种情况,因为它的工作方式很好,并且可以处理版本控制等。

    是否有一种简单的方法可以在恢复包时包含文档xml?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Josh Mc    7 年前

    最后,我发现它归结为三件事,即:


    1. 确保将项目配置设置为生成文档。

      • 通过手动添加代码,例如:

        <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"><DocumentationFile>bin\$(Configuration)\netstandard2.0\Project.documentation.xml</DocumentationFile> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <DocumentationFile>bin\$(Configuration)\netstandard2.0\Project.documentation.xml</DocumentationFile> </PropertyGroup>

      • 或者,如果要通过VS执行此操作,也可以通过Visual Studio项目属性菜单,确保对所有配置执行此操作(如下图中的A所示): Visual Studio project properties enable documentation generation


    1. 将EnableDocumentationFile添加到。csproj文件,例如:

      <PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework> <RootNamespace>project</RootNamespace> <Configurations>Debug;Release</Configurations> <EnableDocumentationFile>true</EnableDocumentationFile> </PropertyGroup>


    1. 最重要的是,让您的项目知道(再次在.csproj中)它应该复制到文档文件上,如果您希望它显示在与包dll相同的级别,请使用PackageFlatte:

      <ItemGroup> <None Remove="bin\$(Configuration)\netstandard2.0\Project.documentation.xml" /> </ItemGroup> <ItemGroup> <Content Include="bin\$(Configuration)\netstandard2.0\Project.documentation.xml"> <Pack>true</Pack> <PackageCopyToOutput>true</PackageCopyToOutput> <PackageFlatten>true</PackageFlatten> </Content> </ItemGroup>