c# github - Google.Pubsub.V1 beta01이 dotnet cli 프로젝트에서 작동하지 않는 이유는 무엇입니까?





gcp set (2)


현재 Google.Pubsub.V1이 RPC 전송으로 사용하는 gRPC 0.15의 제한 사항입니다. msbuild에서 Grpc.Core 패키지의 build/net45/Grpc.Core.targets 파일은 모든 원시 바이너리를 복사합니다. DNX에서 패키지는 복사되지 않았고 gRPC는 로컬 패키지 저장소를 사용하여 올바른 위치에서 파일을 찾습니다. dotnet cli에서 패키지를 호스팅 할 때 "runtimes"루트 디렉토리를 사용해야합니다.

우리는 gRPC에서이 문제를 해결 했지만 베타 -01 릴리스 로이 문제를 해결 하지 못했습니다. 우리는 beta-02로 수정하기를 희망합니다.

파일을 수동으로 복사하여이 문제를 해결할 수 있습니다.

mkdir bin\Debug\net45\win7-x64\nativelibs\windows_x64
copy \users\jon\.dnx\packages\Grpc.Core\0.15.0\build\native\bin\windows_x64\grpc_csharp_ext.dll bin\Debug\net45\win7-x64\nativelibs\windows_x64

...하지만 그건 분명히 아주 까다 롭습니다. 근본적인 문제가 해결 될 때까지는 msbuild를 사용하는 것이 좋습니다.

Google Cloud 프로젝트에서 사용할 수있는 주제를 나열해야하는 매우 간단한 프로그램을 만들었습니다. 코드는 간단합니다.

using System;
using Google.Pubsub.V1;

public class Test
{
    static void Main()
    {
        var projectId = "(fill in project ID here...)";
        var projectName = PublisherClient.FormatProjectName(projectId);
        var client = PublisherClient.Create();
        foreach (var topic in client.ListTopics(projectName))
        {
            Console.WriteLine(topic.Name);
        }
    }    
}

.NET 4.5를 대상으로하는 "일반"msbuild 프로젝트에서이 작업을 실행하면 정상적으로 작동합니다. 다음 project.json 파일에 dotnet cli (1.0.0-preview2-003121)를 사용하려고 할 때 :

{
  "buildOptions": {
    "emitEntryPoint": true
  },
  "dependencies": {
    "Google.Pubsub.V1": "1.0.0-beta01"
  },
  "frameworks": {
    "net45": { }
  }
}

... 예외가 있습니다.

Unhandled Exception: System.IO.FileNotFoundException: Error loading native library.
Not found in any of the possible locations c:\[...]\Pubsub.Demo\bin\Debug\net45\win7-x64\nativelibs\windows_x64\grpc_csharp_ext.dll
   at Grpc.Core.Internal.UnmanagedLibrary.FirstValidLibraryPath(String[] libraryPathAlternatives)
   at Grpc.Core.Internal.UnmanagedLibrary..ctor(String[] libraryPathAlternatives)
   at ...

.NET 코어를 목표로하지 않으므로 지원되지 않아야합니까?




Google이 이전 콘솔에서 프로젝트를 더 이상 삭제할 수 없다는 것을 알았습니다. 지금은 프로젝트를 클릭하고 "청구 및 설정"을 클릭하면 삭제 버튼이 표시됩니다.







c# google-cloud-platform grpc dotnet-cli