Visual studio 2017 强制将项目引用包含在netstandard nuget包中
我有一个netstandard项目,其中包括两个项目参考。Visual studio 2017正在用于构建nukpg。生成项目时,生成的nupkg仅包含该项目生成的程序集,并将两个项目引用列为nuget依赖项。有没有办法强制打包将这些程序集作为lib文件包含 csprojVisual 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
<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软件包,接受的答案对我不起作用,但是这个解决方案对我有效!非常感谢。已经为此寻找了很多小时的解决方案,效果很好。