如何使.NET核心MSBuild不为元包项目生成空程序集
我在如何使.NET核心MSBuild不为元包项目生成空程序集,msbuild,.net-core,Msbuild,.net Core,我在project.json中定义了一个.NET核心元包项目。它不包含代码,只包含对其他几个子项目的引用。此元包项目的存在有两个目的: 可以生成引用这些子项目的NuGet包的NuGet元包 顶层项目只能引用此元包项目,以将依赖关系链接到这些子项目 这适用于project.json——在构建元包项目时,所有引用的子项目都会被构建,而元包项目本身不会生成任何东西 现在有了.NET Core SDK 1.0,我正通过dotnet migrate从project.json迁移到.csproj,我发现行为
project.json
中定义了一个.NET核心元包项目。它不包含代码,只包含对其他几个子项目的引用。此元包项目的存在有两个目的:
project.json
——在构建元包项目时,所有引用的子项目都会被构建,而元包项目本身不会生成任何东西
现在有了.NET Core SDK 1.0,我正通过dotnet migrate
从project.json
迁移到.csproj
,我发现行为已经改变了——构建元包项目仍然会生成引用的子项目,但它本身开始生成一个空程序集。这会导致顶级项目的发布文件夹中出现一个空的meta package.dll
,我不能简单地使用构建后目标将其删除,因为它也记录在生成的.deps.json
文件中,这使其成为TPA(受信任的平台程序集)的一部分。因此,简单地删除空程序集将导致应用程序在启动时崩溃
在使用MSBuild生成此元包项目时,是否有方法不生成空程序集 Nuget包是使用nuspec文件创建的。新的基于dotnetcore的项目系统能够为类库构建这些nuspec文件和包。这并不否认它包装了nuget和nuspec文件。如果希望控制包的生成方式,从而生成没有dll的包,则必须直接使用nuget 您可以创建一个nuspec文件,该文件只包含您希望获取的依赖项 nuspec文件示例:
<?xml version="1.0"?>
<package >
<metadata>
<id>MetaPackageId</id>
<version>$VERSION$</version>
<authors>authors</authors>
<owners>owners</owners>
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
<projectUrl>proj url</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>
desc
</description>
<summary>
summary
</summary>
<releaseNotes>
View the release notes on github
</releaseNotes>
<copyright></copyright>
<tags>tags</tags>
<dependencies>
<dependency id="APackageDependency" version="1.0.0" />
</dependencies>
</metadata>
</package>
元包装
$VERSION$
作者
业主
http://opensource.org/licenses/MIT
项目url
假的
描述
总结
在github上查看发行说明
标签
然后可以调用nuget-pack/path/to/my.nuspec