gpt4 book ai didi

msbuild - 如何使 .NET Core MSBuild 不为元包项目生成空程序集

转载 作者:行者123 更新时间:2023-12-01 06:03:12 26 4
gpt4 key购买 nike

我在 project.json 中定义了一个 .NET Core 元包项目.它不包含任何代码,只包含对其他几个子项目的引用。这个元包项目有两个目的:

  • 可以生成引用这些子项目的 NuGet 包的 NuGet 元包。
  • 顶级项目只能引用这个元包项目来将依赖链接到那些子项目。

  • 这适用于 project.json -- 在构建元包项目时,所有引用的子项目都会被构建,元包项目本身不会产生任何东西。

    现在使用 .NET Core SDK 1.0,我从 project.json 迁移至 .csproj来自 dotnet migrate ,我发现行为发生了变化——构建元包项目仍然会构建引用的子项目,但它本身开始生成一个空程序集。这会导致一个空 meta-package.dll出现在顶级项目的发布文件夹中,我不能简单地将它与构建后目标一起删除,因为它也记录在生成的 .deps.json 中文件,这使其成为 TPA(可信平台程序集)的一部分。因此,简单地删除空程序集将导致应用程序在启动时崩溃。

    使用 MSBuild 构建此元包项目时,有没有办法不生成空程序集?

    最佳答案

    Nuget 包是使用 nuspec 文件创建的。新的基于 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

    关于msbuild - 如何使 .NET Core MSBuild 不为元包项目生成空程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42881383/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com