【问题标题】:Devenv Commandline Build not using C# 7.2 language featureDevenv 命令行构建不使用 C# 7.2 语言功能
【发布时间】:2018-05-25 09:09:58
【问题描述】:

升级到 c# 7.2 后,我们的自动构建服务器出现编译错误。 “功能‘只读引用’在 c#7.0 中不可用。请使用语言 7.2 或更高版本。”

失败的项目在高级构建选项卡中设置为使用“最新的次要版本”,即 7.2。该项目在视觉工作室中构建并运行良好。命令行因该错误而失败。将构建设置显式设置为 7.2 而不是“最新的次要版本”也会失败。

为什么命令行无法加载最新的语言功能?并且在 VS IDE 下也能用?

命令行是 "devenv SolutionFile.sln /Build Release"

重现/演示它的示例应用程序是一个 WPF 应用程序,具有一个表单和一个按钮,以及一个用于传递结构的处理程序。

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        private struct Test123
        {
            public string test;
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Test123 test;
            test.test = "foo";
            Test(test);
        }

        private void Test(in Test123 test)
        {
            // do nothing
        }
    }

更新: 此外,命令行中存在不匹配的版本。命令行打开并显示它在 v15.5.1 上。但是,devenv exe 提供了较早的版本。

【问题讨论】:

  • 这几乎肯定是自动构建的问题,所以请添加一些关于如何设置构建服务器的详细信息..
  • 您能否运行where devenv 以确保您的路径运行的是正确版本的VS?
  • @DanLing 是的,我之前检查过(应该包括在内)。 Ide 快捷方式(适用于构建)和命令行都声称指向同一位置。在 MS Visual Studio 目录内@... Common7\IDE\devenv.exe 另外,我只安装了 VS 2017,不存在早期的主要版本。这个版本的 vs2017 也是从 MS 页面重新安装的。
  • 嗯。发布版本也可以从 UI 中工作吗?
  • @DanLing 是的,发布和调试工作相同。 (我刚刚仔细检查了上面发布的代码示例应用程序)。

标签: c# wpf c#-7.2


【解决方案1】:

我认为验证 C# 7.2 是否已启用的最佳方法是直接编辑 csproj 文件,并确保 <LangVersion>7.2</LangVersion> 包含在所有构建配置中。

例如,发布配置应如下所示:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  <PlatformTarget>AnyCPU</PlatformTarget>
  <DebugType>pdbonly</DebugType>
  <Optimize>true</Optimize>
  <OutputPath>bin\Release\</OutputPath>
  <DefineConstants>TRACE</DefineConstants>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
  <LangVersion>7.2</LangVersion>
</PropertyGroup>

【讨论】:

  • 是的,我的项目文件看起来像: latest 在 IDE 中,这呈现为“C# latest minor version (latest)” IDE 构建,命令行没有。
猜你喜欢
  • 2023-03-30
  • 2012-06-17
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-20
  • 2023-03-18
  • 1970-01-01
相关资源
最近更新 更多