variable google_application_credentials google c# google-cloud-platform grpc dotnet-cli

c# - google_application_credentials - google credentials environment variable



¿Por qué Google.Pubsub.V1 beta01 no funciona con proyectos dotnet cli? (1)

Esto es actualmente una limitación en gRPC 0.15, que Google.Pubsub.V1 usa como su transporte RPC. Bajo msbuild, el archivo build/net45/Grpc.Core.targets en el paquete Grpc.Core copia todos los binarios nativos en su lugar. Bajo DNX, los paquetes no se copiaron y gRPC intenta buscar el archivo en el lugar correcto con el repositorio de paquetes local. Bajo dotnet cli, necesitamos usar el directorio raíz de "tiempos de ejecución" en el paquete para alojar las bibliotecas.

Hemos implementado una solución para esto en gRPC , pero no logramos incluirlo en la versión beta-01. Esperamos arreglarlo para beta-02.

Es posible solucionar esto simplemente copiando manualmente el archivo:

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

... pero eso es obviamente bastante delicado. Yo sugeriría usar msbuild hasta que el problema subyacente haya sido solucionado.

He creado un programa muy simple que debería enumerar los temas disponibles en un proyecto de Google Cloud. El código es trivial:

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); } } }

Cuando ejecuto esto desde un proyecto de msbuild "regular" dirigido a .NET 4.5, funciona bien. Cuando intento usar dotnet cli (1.0.0-preview2-003121) con el siguiente archivo project.json :

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

... veo una excepción:

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 ...

No estoy intentando apuntar a .NET Core, por lo que no debería ser compatible?