Visual studio 2017 强制将项目引用包含在netstandard nuget包中

Visual studio 2017 强制将项目引用包含在netstandard nuget包中,visual-studio-2017,nuget-package,.net-standard,Visual Studio 2017,Nuget Package,.net Standard,我有一个netstandard项目,其中包括两个项目参考。Visual studio 2017正在用于构建nukpg。生成项目时,生成的nupkg仅包含该项目生成的程序集,并将两个项目引用列为nuget依赖项。有没有办法强制打包将这些程序集作为lib文件包含 csproj <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net462</TargetFrame

我有一个netstandard项目,其中包括两个项目参考。Visual studio 2017正在用于构建nukpg。生成项目时,生成的nupkg仅包含该项目生成的程序集,并将两个项目引用列为nuget依赖项。有没有办法强制打包将这些程序集作为lib文件包含

csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net462</TargetFramework>
    <RootNamespace>Verifier.Observations.DevOps.Health</RootNamespace>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <VersionPrefix>1.0.1</VersionPrefix>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\Verifier.Observations.Aspects\Verifier.Observations.Aspects.csproj" />
    <ProjectReference Include="..\Verifier.Observations\Verifier.Observations.csproj" />
  </ItemGroup>

  <ItemGroup>
    <Reference Include="System.ComponentModel.Composition"/>
    <Reference Include="System.Net.Http" />
  </ItemGroup>

</Project>
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <VersionPrefix>1.0.1</VersionPrefix>
    <TargetFramework>net462</TargetFramework>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <NuspecFile>Verifier.Observations.DevOps.Health.Nuspec</NuspecFile>
   <NuspecProperties>version=$(VersionPrefix);id=$(MSBuildProjectName);author=$(Authors);copy=$(Copyright);iconUrl=$(PackageIconUrl)</NuspecProperties>
  </PropertyGroup>
  <ItemGroup>
    <ProjectReference Include="..\Verifier.Observations.Aspects\Verifier.Observations.Aspects.csproj" />
    <ProjectReference Include="..\Verifier.Observations\Verifier.Observations.csproj" />
  </ItemGroup>
  <ItemGroup>
    <Reference Include="System.ComponentModel.Composition" />
    <Reference Include="System.Net.Http" />
  </ItemGroup>
</Project>

net462
验证者。观察。健康
真的
1.0.1

更新 根据@alexgiondea msft的反馈,现在使用以下命令按需要创建包

csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net462</TargetFramework>
    <RootNamespace>Verifier.Observations.DevOps.Health</RootNamespace>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <VersionPrefix>1.0.1</VersionPrefix>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\Verifier.Observations.Aspects\Verifier.Observations.Aspects.csproj" />
    <ProjectReference Include="..\Verifier.Observations\Verifier.Observations.csproj" />
  </ItemGroup>

  <ItemGroup>
    <Reference Include="System.ComponentModel.Composition"/>
    <Reference Include="System.Net.Http" />
  </ItemGroup>

</Project>
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <VersionPrefix>1.0.1</VersionPrefix>
    <TargetFramework>net462</TargetFramework>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <NuspecFile>Verifier.Observations.DevOps.Health.Nuspec</NuspecFile>
   <NuspecProperties>version=$(VersionPrefix);id=$(MSBuildProjectName);author=$(Authors);copy=$(Copyright);iconUrl=$(PackageIconUrl)</NuspecProperties>
  </PropertyGroup>
  <ItemGroup>
    <ProjectReference Include="..\Verifier.Observations.Aspects\Verifier.Observations.Aspects.csproj" />
    <ProjectReference Include="..\Verifier.Observations\Verifier.Observations.csproj" />
  </ItemGroup>
  <ItemGroup>
    <Reference Include="System.ComponentModel.Composition" />
    <Reference Include="System.Net.Http" />
  </ItemGroup>
</Project>

1.0.1
net462
真的
验证者。观察。DevOps。健康。Nuspec
版本=$(版本前缀);id=$(MSBuildProjectName);作者=$(作者);副本=$(版权);iconUrl=$(PackageIconUrl)
nuspec

<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <iconUrl>$iconUrl$</iconUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Inspect automation service to ensure it is up and operational</description>
    <releaseNotes></releaseNotes>
    <copyright>$copy$</copyright>
    <tags>verifier-observation-plugin automation</tags>
    <dependencies>
      <group targetFramework="net462" />
    </dependencies>
    <references>
      <group targetFramework="net462">
        <reference file="Verifier.Observations.DevOps.Automation.dll" />
      </group>
    </references>
  </metadata>
  <files>
    <file src="bin\*\net462\*.dll" target="lib\net462" />
    <file src="bin\*\net462\*.pdb" target="lib\net462" />
  </files>
</package>

$id$
$version$
$title$
$author$
$author$
$iconUrl$
假的
检查自动化服务,确保其正常运行
$copy$
验证器观察插件自动化

您可以使用itemgroup中的项来控制程序集在nuget包中的部署位置,类似于:

<ItemGroup>
    <None Include="!!path_to_assembly!!">
        <PackagePath>lib\net462</PackagePath>
        <Pack>true</Pack>
        <Visible>false</Visible>
    </None>
</ItemGroup>

lib\net462
真的
假的

这应该包括包中指定的程序集。

您可以将以下目标添加到.csproj中:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;net47</TargetFrameworks>
    <TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\ClassLibrary2\ClassLibrary2.csproj" PrivateAssets="all" />
    <ProjectReference Include="..\ClassLibrary3\ClassLibrary3.csproj" Condition="'$(TargetFramework)' == 'net47'" PrivateAssets="all" />
  </ItemGroup>

  <Target Name="CopyProjectReferencesToPackage" DependsOnTargets="ResolveReferences">
    <ItemGroup>
      <BuildOutputInPackage Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))" />
    </ItemGroup>
  </Target>
</Project>

netstandard2.0;网络47
$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage


参考:

@alexgiondea msft Alex谢谢,nuget包是用包含程序集的库创建的。但是,nupkg仍然将项目引用作为依赖项包含。是否可以设置其他标志来阻止此列表?我正在设置一个与您提到的类似的复制,并查看是否/如何删除这些依赖项。请尝试将其添加到“项目引用”节点。这将从nuspec中删除对项目的依赖关系。对于这样的高级场景,您也可以考虑移动到一个显式的.NUPEC文件中,以便对包进行完全控制。提供的答案是完美的,在任何文档中都不容易找到这个答案。我花了很长时间才找到这个,非常感谢。MS应该改进他们的文档。对于.NET标准2.0 NuGet软件包,接受的答案对我不起作用,但是这个解决方案对我有效!非常感谢。已经为此寻找了很多小时的解决方案,效果很好。