【问题标题】:IsPublishable is ignored in .NET 5 unit test projectsIsPublishable 在 .NET 5 单元测试项目中被忽略
【发布时间】:2021-11-24 06:23:24
【问题描述】:

我在解决方案中有一些 .NET 项目。 当我发布它们时,我只想发布我的 src 项目的 DLL,而不是 test 的。

https://github.com/dotnet/docs/issues/13365https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish#msbuild 都提到 IsPublishable 可以用来这样做。

.NET 5 项目似乎忽略了 IsPublishable。

我在任何测试项目中设置以下

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>$(ApplicationTargetFramework)</TargetFramework>
        <IsPublishable>false</IsPublishable>
        <IsPackable>false</IsPackable>
    </PropertyGroup>
</Project>

但后来,当我执行dotnet publish -c Release -o publish 时,我仍然可以看到测试项目*.dlldeps.json。为什么?如何实现我想要的?

【问题讨论】:

    标签: .net msbuild .net-5 dotnet-sdk dotnet-publish


    【解决方案1】:

    我可能做错了什么。它有效。

    dotnet publish -o publish
    

    将为每个项目发布 dll。

    如果您在某些 *.csproj 上添加 &lt;IsPublishable&gt;false&lt;/IsPublishable&gt;,则不会发布这些 dll。

    【讨论】:

    • 对我来说,当我发布整个解决方案 (.sln) 而不是单独发布每个项目 (**/.csproj) 时,它就起作用了
    • 解决方案级别的该命令一次发布解决方案中的所有项目。
    • 是的。我的意思是,它实际上应用了 属性,而它似乎被个别项目忽略了。我只是说,如果有人有同样的问题,他们可以尝试从 **/*.csproj 切换到 *.sln
    • 啊,我明白了。好吧,被imo覆盖是有道理的。如果您将*.csproj 设置为IsPublishablefalse,然后想在该特定项目上使用dotnet publish 明确发布它,我希望它无论如何都能发布。虽然不确定它是否按照设计。我很少发布一个项目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多