c# - 带条件的多目标导致 NuGet 失败?
问题描述
我有一个使用 NuGet 包的项目。它还需要针对每个构建配置的不同框架版本。我将它们放在我的 csproj 文件中,如下所示:
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == '2018|x64'">
<OutputPath>..\BuildFolder\2018</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == '2019|x64'">
<OutputPath>..\BuildFolder\2019</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<TargetFrameworkVersion>v4.7</TargetFrameworkVersion>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
我有比这更多的构建配置,但这些是我有两个不同框架的例子。问题是,当我尝试使用所有发布配置批量构建项目时,其中一半会失败,具体取决于我当前的配置。使用上述两个,我可以将 VS 切换到我的 2018 配置并进行 NuGet 还原,然后批量构建,2018 将工作,2019 将失败,并出现“您的项目不引用 .NET Framework 4.7”错误。如果我然后切换到 2019 配置并执行 NuGet 还原,然后尝试批量构建,我会得到相反的结果;2019 年有效,2018 年告诉我“您的项目未引用 .NET Framework 4.6.1”。
我还尝试在 csproj 文件中放入“TargetFrameworks”对象,但随后 VS 只是在打开时旋转并从不打开项目。
如何让它工作并识别它以批量构建所有配置?我想我可以单独构建它们并且现在必须这样做,但这似乎很费力且没有必要......
解决方案
推荐阅读
- python - 使用 openpyxl 从 xlwt 将 xls 更改为 xlsx
- sql - 如何在其他列中选择具有最大平均值的列
- python - 使用 matplotlib 的 pandas 创建 seaborn 情节
- reactjs - 当元素的值发生变化时,Syncfusion 选项卡控件的值不会刷新
- python - Grakn 查询中的正则表达式
- java - Thread.uncaughtExceptionHandler 没有捕获 DataFormatException、FileAlreadyExistsException 和 NoSuchFileException
- javascript - 基于聚合物的产品导览组件/教程组件
- java - Jmap 错误“多个非选项参数”
- asp.net-mvc - MVC 路由 - 通配符 URL,但受限制
- amazon-web-services - 使用 Boto3 检查 VPC/子网中的互联网连接