私は、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.Runtime
NuGet パッケージ内に (ローカルで)依存関係を追加し、それに対して再構築 -project.lock.json
System.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 に依存しているためです。役に立たないようです、私は何かが欠けているに違いありません:(