所以基本上我是通过运行“pack”目标的.proj文件在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会按预期复制但是文档没有。
我想知道这是否是因为TC生成的.nuspec文件,如果我可能需要放弃teamcities nuspec并创建我自己的,但是我希望避免这种情况,因为它的工作方式很好,并处理版本等。
在恢复包时,是否有一种简单的方法可以包含文档xml?
答案 0 :(得分:0)
最后我发现它归结为3件事,是:
确保将项目配置设置为生成文档。
通过手动添加代码,例如:
<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>
或者通过Visual Studio Project属性菜单,如果您通过VS执行此操作,还要确保对所有配置执行此操作(如下图中的A所示):
将EnableDocumentationFile添加到.csproj文件中,例如:
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>project</RootNamespace>
<Configurations>Debug;Release</Configurations>
<EnableDocumentationFile>true</EnableDocumentationFile>
</PropertyGroup>
最重要的是让您的项目(再次在您的.csproj中)知道它应该复制文档文件,如果您希望它与包dll显示在同一级别,请使用PackageFlatten:
<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>