Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从类库NuGet包中排除包?_C#_Xml_Visual Studio_Nuget_Nuget Package - Fatal编程技术网

C# 如何从类库NuGet包中排除包?

C# 如何从类库NuGet包中排除包?,c#,xml,visual-studio,nuget,nuget-package,C#,Xml,Visual Studio,Nuget,Nuget Package,我有一个.NET标准类库项目,它将构建到一个NuGet包中。我已经安装了docfx.console软件包,这样每次构建时都可以生成一个文档网站 现在,当另一个项目安装我的库的NuGet包时,docfx.consoleNuGet包也会被安装,这是我不想要的 在Package下的项目属性中,我选择了在构建时生成NuGet Package。这将在我构建库时自动为库生成NuGet包。但是在这个选项卡中,我看不到任何可以配置为排除任何包的地方 因此,为了排除docfx.console包,我创建了一个包含以

我有一个
.NET标准
类库项目,它将构建到一个NuGet包中。我已经安装了
docfx.console
软件包,这样每次构建时都可以生成一个文档网站

现在,当另一个项目安装我的库的NuGet包时,
docfx.console
NuGet包也会被安装,这是我不想要的

在Package下的项目属性中,我选择了在构建时生成NuGet Package。这将在我构建库时自动为库生成NuGet包。但是在这个选项卡中,我看不到任何可以配置为排除任何包的地方

因此,为了排除
docfx.console
包,我创建了一个包含以下内容的.nuspec文件:

<?xml version="1.0" encoding="utf-8" ?>

<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    <!-- Required elements-->
    <id>My.Library</id>
    <version>1.0.1</version>
    <description>My Library's project dscription.</description>
    <authors>Me</authors>
    <copyright>My Copyright (c)</copyright>

    <!-- Optional elements -->
    <dependencies>
      <dependency id="docfx.console" version="2.36.1" exclude="build" />
    </dependencies>
    <!-- ... -->
  </metadata>
  <!-- Optional 'files' node -->
</package>

我的图书馆
1.0.1
我的库的项目描述。
我
我的版权(c)
但它不起作用。在构建NuGet包时,如何更正它以排除
docfx.console

或者,是否有其他方法可以将
docfx.console
包从NuGet包中排除

如何从类库NuGet包中排除包

根据NuGet官方文件:

您可能纯粹将依赖项用作开发工具和工具 可能不想将其公开给将消耗您的资源的项目 包裹在此场景中,您可以使用PrivateAssets元数据 控制这种行为

<ItemGroup>
    <!-- ... -->

    <PackageReference Include="Contoso.Utility.UsefulStuff" Version="3.6.0">
        <PrivateAssets>all</PrivateAssets>
    </PackageReference>

    <!-- ... -->
</ItemGroup>


尝试将
all
添加到项目中
docfx.console
PackageReference
。虽然这成功隐藏了依赖项,但在我的情况下,我在子项目中隐藏了依赖项,然后通过父项目中的nuget获取子项目,并对使用依赖项的子项目调用一些方法。在本例中,我得到一个TypeInitilationException,其中包含System.IO.FileNotFoundException:无法加载文件或程序集的NLog。。。在我的例子中,我在工具库中包装Nlog并调用包装器。你知道怎么解决这个问题吗?
  <ItemGroup>
    <PackageReference Include="docfx.console" Version="2.36.2" PrivateAssets="All" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="docfx.console" Version="2.36.2">
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
  </ItemGroup>
<dependencies>
  <dependency id="docfx.console" version="2.36.1" />
</dependencies>