55

私は、Protocol Buffersが ASP.NET チームの新しいポータブル ランタイムや、理想的には他のほとんどの最新環境で動作することを検証しようとしています。3.0.0-alpha4 ビルドは profile259 を使用して少し前に作成されたものなので、場合によっては変更が必要になると思いますが、試してみようと思いました。.NET Core のターゲットに関する Oren Novotny の投稿を認識しており、 Google.Protobuf nuspec ファイルにいくつかの変更を加える必要があると予想されていましたが、私が遭遇したエラーは私を困惑させました.

DNX バージョン: 1.0.0-rc1-update1

現在テストしようとしているシナリオは、dnx451 を対象とするコンソール アプリです。私は非常に単純なサンプルアプリを持っています:

using Google.Protobuf.WellKnownTypes;
using System;

public class Program
{
    public static void Main(string[] args)
    {
        Duration duration = new Duration { Seconds = 100, Nanos = 5555 };
        Console.WriteLine(duration);
    }
}

...そして小さなproject.json

{
  "compilationOptions": { "emitEntryPoint": true },
  "dependencies": { "Google.Protobuf": "3.0.0-alpha4" },

  "frameworks": {
    "dnx451": { }
  }
}

ここでも使用していないことに注意してdnxcore*ください-皮肉なことに、問題なく動作するようになりました。

dnu restore正常に動作します; dnx run次のエラーで失敗します:

エラー: c:\Users\Jon\Test\Projects\protobuf-coreclr\src\ProtobufTest\Program.cs(9,9): DNX、Version=v4.5.1 エラー CS0012: 型 'オブジェクト' がアセンブリで定義されていますそれは参照されていません。アセンブリ 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' への参照を追加する必要があります。

次の変更により、同じエラーが発生します。

  • "System.Runtime": "4.0.0"フレームワークのdependenciesセクションに依存関係を明示的に追加する
  • "System.Runtime": "4.0.0-beta-23109"フレームワークのdependenciesセクションに依存関係を明示的に追加し4.0.10-beta-*、 、4.0.20-beta-*および4.0.21-beta*.
  • System.RuntimeNuGet パッケージ内に (ローカルで)依存関係を追加し、それに対して再構築 - project.lock.jsonSystem.Runtime v4.0.0 を含めるように更新されましたが、同じエラーが発生しました
  • lib\dotnetパッケージ内のディレクトリと依存関係を含む同上

(独立して、エントリなしで)機能したが、私を混乱さた手順:dependencies

  • Console.WriteLine呼び出しを just に変更しますConsole.WriteLine("foo")(ただし、他の変更はありません)
  • duration変数の型をobject代わりにに変更するDuration
  • Protocol Buffers のすべてのヒントを完全に削除し、代わりにTimeSpanまたは類似のものを使用する
  • dnx451セクションの project.json に次を追加します。

    "frameworkAssemblies": {
      "System.Runtime": ""
    }
    

最終的には、ユーザーがこれを行う必要はありません。少なくとも、プロトコル バッファのためではありません。これは、プロトコル バッファの作成方法に関係しいると推測していますが、原因がよくわかっていないため、修正するのは困難です。

エントリを機能させる方法をdependencies考え出すことができれば、その依存関係を Protocol Buffers 自体に追加できると思いますが、これは問題ありませんが、project.lock ファイルで System.Runtime v4.0.0 に依存しているためです。役に立たないようです、私は何かが欠けているに違いありません:(

4

3 に答える 3