2017-12-11 5 views
0

c#7.2にアップグレードした後、私たちの自動ビルドサーバがコンパイルエラーを起こしました。 "機能 'readonly references'はC#7.0では使用できません。言語7.2以上を使用してください。DevenvコマンドラインC#7.2言語機能を使用しないでビルド

失敗したプロジェクトは、[高度なビルド]タブで「最新マイナーバージョン」(7.2)を使用するように設定されています。このプロジェクトは、Visual Studioでうまく構築されて実行されます。そのエラーでコマンドラインが失敗します。ビルド設定を「最新のマイナーバージョン」ではなく7.2に明示的に設定することも失敗します。

コマンドラインで最新の言語機能を読み込めないのはなぜですか?それはVSのIDEで動作するのですか?

コマンドラインは 「devenvをSolutionFile.sln /リリースの構築」である

再現するサンプルアプリケーション/これは、フォームやボタン、および構造体を渡すためのハンドラで、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 
     } 
    } 

enter image description here

更新: また、コマンドラインでのミスマッチのバージョンがあります。コマンドラインが開き、v15.5.1が表示されます。しかし、devenv exeは以前のバージョンを提供します。 enter image description here

+0

これはほぼ確実に自動ビルドの問題ですので、あなたのビルドサーバーのセットアップがどのようにかについていくつかの詳細を追加してください。.. –

+0

は を@DanLingこんにちはダン、混乱のために申し訳ありません。自動ビルドとは何の関係もありません。コマンドプロンプトを開き、元の投稿で指定したコマンドラインで入力するとエラーが再現されます。 これが役立つ場合は、コマンドラインの画像を追加しました。 –

+1

あなたのパスに正しいバージョンのVSが実行されていることを確認するために 'where devenv'を実行できますか? –

答えて

0

私は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> 
+1

はい、私のプロジェクトファイルは次のようになります: 最新 IDEで、これは "C#最新マイナーバージョン(最新)"と表示されます IDEはビルドされますが、コマンドラインは表示されません。 –

関連する問題