我在project.json
中定义了一个.NET Core元包项目。它不包含任何代码,只是引用了一些其他子项目。这个元包项目有两个目的:
这适用于project.json
- 在构建元包项目时,所有引用的子项目都会构建,并且元包项目本身不会产生任何内容。
现在使用.NET Core SDK 1.0,我通过project.json
从.csproj
迁移到dotnet migrate
,我发现行为已经改变了 - 构建元包项目仍然获取引用的子项目,但本身开始生成一个空的程序集。这会导致空meta-package.dll
出现在顶级项目的发布文件夹中,我不能简单地使用后构建目标将其删除,因为它也记录在生成的.deps.json
文件中,这使得它是TPA(可信平台组件)的一部分。因此,只需删除空组件就会导致应用程序在启动时崩溃。
在使用MSBuild构建此元包项目时,有没有办法不生成空组件?
答案 0 :(得分:0)
使用nuspec文件创建Nuget包。新的基于dotnet核心的项目系统能够为您的类库构建这些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>
然后你可以调用nuget pack /path/to/my.nuspec