当使用`dotnet build`或`dotnet publish`时如何为参考项目指定构建配置?

沃尔特·D

我有一个.NET Core 3项目,它引用了其他几个项目。我的主根项目具有Release-X构建配置,但其他项目仅具有Release配置,没有匹配的Release-X配置。

当我尝试使用此发布我的主要根项目时...

dotnet publish MyProject.csproj -c Release-X

……似乎为所有引用的项目使用了一些神秘的,不存在的默认构建配置。(我可以知道,因为引用的项目在其所有构建配置允许使用不安全的代码,但是使用上述命令进行构建会导致不安全的代码错误。)

我希望能够使用其Release-X构建配置来构建我的主根项目,但要使用其配置来构建所有引用的项目Release我该怎么做呢?

马丁·乌尔里希

配置值设置为全局属性,该属性在整个项目图上强制执行,直到项目间引用显式更改此属性为止。

有三种方法可以解决此问题,但请注意,由于NuGet还原逻辑的差异,从Visual Studio内部构建或从命令行构建.sln文件时,这可能会导致结果不一致(但如果没有Condition属性,就可以了)在您的csproj中依赖于的包或项目引用上$(Configuration)

  1. 为引用的项目设置一个明确的配置(我建议使用此配置):

    <Project Sdk="Microsoft.NET.Sdk">
      ....
      <PropertyGroup>
        <ReferencedConfiguration>$(Configuration)</ReferencedConfiguration>
        <ReferencedConfiguration Condition="'$(Configuration)' == 'Release-X'>Release</ReferencedConfiguration>
      </PropertyGroup>
      <ItemGroup>
        <ProjectReference Include="..\other\project.csproj" AdditionalProperties="Configuration=$(ReferencedConfiguration)" />
      </ItemGroup>
    </Project>
    
  2. 防止全局配置在项目间引用之间流动。这不好,因为它将在目标项目中默认为“ Debug”,但这是一种可能的处理方式:

    <Project Sdk="Microsoft.NET.Sdk">
      ...
      <ItemGroup>
        <ProjectReference Include="..\other\project.csproj" UndefineProperties ="Configuration" />
      </ItemGroup>
    </Project>
    
  3. 更改引用的项目,以免将“配置”视为全局属性(如果已设置)并将其覆盖。为了适当地影响所有依赖于此的逻辑,需要在SDK导入之前进行此操作:

    <Project TreatAsLocalProperty="Configuration">
      <PropertyGroup Condition="'$(Configuration)' != '' and '$(Configuration)' != 'Debug' and '$(Configuration)' != 'Release'>
        <Configuration>Release</Configuration>
      </PropertyGroup>
      <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
    
      .... (other project content)
    
      <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
    </Project>
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用“ dotnet”工具构建.sqlproj项目?

来自分类Dev

即使使用--no-build标志,在运行dotnet测试时如何避免Wix构建错误?

来自分类Dev

如何在Build Yaml中发布dotnet

来自分类Dev

如何使用 .bat 文件构建和运行 dotnet 核心项目?

来自分类Dev

使用DotNet(Core / Standrad)时,我如何在构建时使用项目版本?

来自分类Dev

使用 dotnet new angular 指定框架版本

来自分类Dev

使用MSBuild构建gRPC dotnet核心项目时如何包括自定义目录

来自分类Dev

如何使用dotnet命令创建nuget metapackage?

来自分类Dev

如何在dotnet cli中使用“ -optimize”?

来自分类Dev

使用dotnet时未创建的捆绑包在具有dotnet捆绑包任务的项目中运行

来自分类Dev

强制使用dotnet构建重新编译项目

来自分类Dev

使用dotnet cli一步编译多个dotnet核心项目

来自分类Dev

dotnet cli如何使用以前的SDK /框架创建项目?

来自分类Dev

dotnet核心dotnet构建忽略更改

来自分类Dev

在dotnet运行中使用VSCode任务时出现问题

来自分类Dev

使用StackLabels时出现DotNet.Highcharts错误

来自分类Dev

如何使用dotnet测试运行特定测试?

来自分类Dev

如何在WPF中使用Vlc.DotNet?

来自分类Dev

您如何在dotnet Core中使用DBContext

来自分类Dev

如何使用Dotnet Core获取Redis上的密钥的到期时间?

来自分类Dev

如何使用dotnet cli安装'Node JS Tools'

来自分类Dev

您如何在dotnet Core中使用DBContext

来自分类Dev

如何使用DotNet.Contracts NuGet软件包?

来自分类Dev

如何使用webpack HASH文件名和dotnet发布?

来自分类Dev

您如何在 netcoreapp 中使用 `dotnet ef ...` 工具?

来自分类Dev

如何使用 dotnet SDK 删除 Azure 中的单个资源?

来自分类Dev

无法通过dotnet build命令编译模板C ++ / CLI(.NET Core 3.1)项目

来自分类Dev

在使用Http.sys和URLPrefix时,如何配置dotnet core 3来提供React SPA?

来自分类Dev

使用代码1的Dotnet publish-iis出口。使用.csproj时找不到Project.json?

Related 相关文章

  1. 1

    如何使用“ dotnet”工具构建.sqlproj项目?

  2. 2

    即使使用--no-build标志,在运行dotnet测试时如何避免Wix构建错误?

  3. 3

    如何在Build Yaml中发布dotnet

  4. 4

    如何使用 .bat 文件构建和运行 dotnet 核心项目?

  5. 5

    使用DotNet(Core / Standrad)时,我如何在构建时使用项目版本?

  6. 6

    使用 dotnet new angular 指定框架版本

  7. 7

    使用MSBuild构建gRPC dotnet核心项目时如何包括自定义目录

  8. 8

    如何使用dotnet命令创建nuget metapackage?

  9. 9

    如何在dotnet cli中使用“ -optimize”?

  10. 10

    使用dotnet时未创建的捆绑包在具有dotnet捆绑包任务的项目中运行

  11. 11

    强制使用dotnet构建重新编译项目

  12. 12

    使用dotnet cli一步编译多个dotnet核心项目

  13. 13

    dotnet cli如何使用以前的SDK /框架创建项目?

  14. 14

    dotnet核心dotnet构建忽略更改

  15. 15

    在dotnet运行中使用VSCode任务时出现问题

  16. 16

    使用StackLabels时出现DotNet.Highcharts错误

  17. 17

    如何使用dotnet测试运行特定测试?

  18. 18

    如何在WPF中使用Vlc.DotNet?

  19. 19

    您如何在dotnet Core中使用DBContext

  20. 20

    如何使用Dotnet Core获取Redis上的密钥的到期时间?

  21. 21

    如何使用dotnet cli安装'Node JS Tools'

  22. 22

    您如何在dotnet Core中使用DBContext

  23. 23

    如何使用DotNet.Contracts NuGet软件包?

  24. 24

    如何使用webpack HASH文件名和dotnet发布?

  25. 25

    您如何在 netcoreapp 中使用 `dotnet ef ...` 工具?

  26. 26

    如何使用 dotnet SDK 删除 Azure 中的单个资源?

  27. 27

    无法通过dotnet build命令编译模板C ++ / CLI(.NET Core 3.1)项目

  28. 28

    在使用Http.sys和URLPrefix时,如何配置dotnet core 3来提供React SPA?

  29. 29

    使用代码1的Dotnet publish-iis出口。使用.csproj时找不到Project.json?

热门标签

归档