gpt4 book ai didi

.net-core - 对于只有 FrameworkTarget 的项目,dotnet build ignore --framework 参数

转载 作者:行者123 更新时间:2023-12-04 14:22:51 33 4
gpt4 key购买 nike

我使用 .NET Core SDK 版本 2.1.302 .我的解决方案有两种类型的项目:图书馆和网络。所有库都针对 .NET Standard 2.0:<TargetFramework>netstandard2.0</TargetFramework>和网络项目有多个目标:<TargetFrameworks>net462;netcoreapp2.0</TargetFrameworks>

我有两个 CI 构建:用于使用 net462 的 Windows 和基于带有 netcoreapp2.0 的 linux 在 docker 中构建。

在构建解决方案的 docker build 中,我使用以下代码行:

RUN dotnet build ./MySolution.sln --configuration Release --framework netcoreapp2.0

构建失败并出现如下错误:

Assets file '/app/MyLibraryProject/obj/project.assets.json' doesn't have a target for '.NETCoreApp,Version=v2.0'. Ensure that restore has run and that you have included 'netcoreapp2.0' in the TargetFrameworks for your project. [/app/MyLibraryProject.csproj]

这是因为正如我之前提到的,我的库项目只针对一个框架——netstandard2.0

那么,我的问题是如何处理这种情况?我应该如何指定只有一个目标框架的项目应该忽略 --framework 参数?

最佳答案

为了确保答案被注意到,我发现解决这个问题的最佳方法是来自上述评论流的@José Pedro 的解决方案。

在 csproj 文件中,我在 TargetFramework 元素上设置了一个条件。现在它看起来如下:

<TargetFrameworks Condition="'$(CoreOnly)' != 'True'">net472;netcoreapp2.1</TargetFrameworks>
<TargetFramework Condition="'$(CoreOnly)' == 'True'">netcoreapp2.1</TargetFramework>

然后默认情况下会编译两者,但您可以传递一个 CoreOnly 参数以仅编译 .NET Core 框架。

dotnet build MySolution.sln/p:CoreOnly=True

关于.net-core - 对于只有 FrameworkTarget 的项目,dotnet build ignore --framework 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51861544/

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