有没有办法在VisualStudio2019中发布.NET标准库而不生成.nupkg?
我的理解是,当发布.NET标准库时,预期的行为是生成有没有办法在VisualStudio2019中发布.NET标准库而不生成.nupkg?,.net,visual-studio,nuget,publish,.net-standard,.net,Visual Studio,Nuget,Publish,.net Standard,我的理解是,当发布.NET标准库时,预期的行为是生成.nupkg 我有内部的.Net标准库,可以在内部项目中使用。一个典型的工作流是发布库,然后将发布的文件复制到使用项目中。这不是我应该做的事情吗?发布.NET标准库时缺少选项,这让我有点困惑,因为有一个.nupkg,没有选择以不同的形式发布 我想从publish中获得的只是publish目录中必要的库文件的集合(不在nupkg中)。有办法做到这一点吗 我的理解是,当您发布.Net标准库时 预期的行为是生成一个.nupkg。我想从中得到什么 发布
.nupkg
我有内部的.Net标准库,可以在内部项目中使用。一个典型的工作流是发布库,然后将发布的文件复制到使用项目中。这不是我应该做的事情吗?发布.NET标准库时缺少选项,这让我有点困惑,因为有一个.nupkg
,没有选择以不同的形式发布
我想从publish中获得的只是publish目录中必要的库文件的集合(不在nupkg
中)。有办法做到这一点吗
我的理解是,当您发布.Net标准库时
预期的行为是生成一个.nupkg。我想从中得到什么
发布只是发布中必需的库文件的集合
目录(不在nupkg中)。有办法做到这一点吗
对于普通的.NETFramework项目,如果您引用一个nuget包并构建它。然后,您将获得一个输出文件夹(bin\debug或bin\release),其中包含Project.dll和Package.dll。这就是你想要的
但是对于.net标准
项目,默认情况下只输出项目.dll
。此外,它也是预期行为,请参见。这就是为什么我建议您需要手动编辑xx.csproj
,以获得构建期间的预期行为。这是出于设计考虑的,它不会将nuget依赖项复制到输出,这是一种可以满足您需求的变通方法
关于在VS IDE(.net标准项目)中右键单击project node=>publish时,publish输出为xx.nupkg的原因,请检查:用于.net标准参考程序集的主要分发工具是NuGet packages。我假设这就是publish输出为xx.nupkg的原因,很难说,它可能是设计的
编辑:
有没有一种方法可以发布.Net标准库而不生成
2019年Visual Studio中的.nupkg
如果您正在引用.net标准项目的发布选项。(在解决方案资源管理器=>Publish中右键单击.net标准项目的项目名称)。恐怕答案是否定的。此选项是设计的,目前不支持其他选项,如发布包含所有引用程序集的文件夹。您可能需要添加一个
希望我的澄清能有所帮助,如果我误解了什么,请随时纠正我:(
一个典型的工作流程是发布库,然后将发布的文件复制到消费项目。这不是我应该做的事情吗
不,那只是最糟糕的做事方式
如果/由于您没有使用本地生成的Nuget软件包,您应该使用:
当您有一个生成程序集的项目时,您应该引用该项目,而不是使用文件引用。项目到项目引用的优点是它在生成系统中的项目之间创建了依赖关系
包含引用一个或多个内部库的项目的每个解决方案也应包含解决方案中的库(以及这些库引用的任何内部库)
我将在创建一些一次性项目的过程中详细介绍这一点,但这些技术也适用于现有代码-您只需将它们添加到解决方案中,而不是创建新的:
- 创建
ClassLibrary1
targeting.NET Standard 2.0
- 向解决方案中添加新项目:
ClassLibrary2
targeting.NET Standard 2.0
- 让我们在
ClassLibrary2
:Newtonsoft.Json
- 在解决方案资源管理器中右键单击
ClassLibrary1
,单击Add
,然后单击Reference
。在项目选项卡中勾选ClassLibrary2
,然后单击OK。ClassLibrary1
现在有一个对ClassLibrary2
的项目引用,以下内容已添加到ClassLibrary1.csproj:
- 添加.NET控制台应用程序项目,
ConsoleApp1
- 将
ClassLibrary
的项目参考添加到ConsoleApp1
- 保存解决方案
- 使用发布配置构建解决方案
- 我们需要的一切都在console应用程序的bin文件夹中,并且看不到Nupkg文件夹:
- 如果我们创建另一个解决方案并向其中添加库,或者重用此解决方案,然后向其中添加一个.NET Core console应用程序,并让该应用程序对
ClassLibrary1
进行项目引用并进行构建,那么文件夹树中的任何位置都不会出现Nupkg
- 但是,我们发布.NET核心应用程序。至少,我喜欢发布我的.NET核心应用程序(供内部使用)作为“自包含”。为此,我右键单击解决方案资源管理器中的.NET Core应用程序,单击
发布
,并选择文件夹
作为目标。我单击创建配置文件
,然后单击编辑
,将部署模式更改为自包含
,然后保存。然后发布应用程序(不是库),我在发布文件夹中获得了我需要的所有文件,包括内部库和.NET Core(别担心,Newtonsoft DLL也在那里,只是在屏幕截图中看不到):
我构建Nuget包的唯一时间是:
- 如果我明确发布内部库,或者
- 如果项目文件[]中有
true
如果你正在分发librar,用“Nuget方式”是一个很好的有效方法
<ItemGroup>
<ProjectReference Include="..\ClassLibrary2\ClassLibrary2.csproj" />
</ItemGroup>