Max*_*eue 3 c# firebase gcloud serverless
我能够毫无问题地部署我的 firebase c# 函数,但是,当我引用另一个 c# 项目以便我可以利用另一个对象时,我收到错误消息,说项目不存在。
因此能够毫无问题地部署以下内容:
namespace CloudFunctions
{
public class Login : IHttpFunction
{
public async Task HandleAsync(HttpContext context) {
await context.Response.WriteAsync("Hello World!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个类位于一个名为 CloudFunctions 的项目中。我添加了对名为 Services 的项目的项目引用,以便我可以调用登录服务,但出现以下错误:
The referenced project '../Services/Services.csproj' does not exist
Run Code Online (Sandbox Code Playgroud)
这就是我的部署方式:
gcloud functions deploy login --entry-point CloudFunctions.Login --runtime dotnet3 --trigger-http --allow-unauthenticated
Run Code Online (Sandbox Code Playgroud)
我无法想象我们需要将所有内容都放在一个项目中才能进行部署?
您需要使所有项目可供构建包使用(即从父目录部署),但也使用构建GOOGLE_BUILDABLE时环境变量指定包含入口点的项目。
来自Functions Framework GitHub 存储库中的部署文档:
现实世界的函数通常是较大应用程序的一部分,该应用程序通常包含数据类型和通用业务逻辑的通用代码。如果您的函数通过本地项目引用(
<ProjectReference>.csproj 文件中的元素)依赖于另一个项目,则在部署到 Google Cloud Functions 时还必须包含该项目的源代码。此外,您需要指定哪个项目包含您想要部署的功能。在所有项目并排位于一个顶级目录中的典型目录结构中,这意味着您需要从该顶级目录而不是从函数的项目目录进行部署。您还需要使用
--set-build-env-vars命令行标志来指定GOOGLE_BUILDABLE构建时环境变量。这告诉 Google Cloud Functions 部署过程要构建和部署哪个项目。请注意,GOOGLE_BUILDABLE环境变量值区分大小写,并且应与使用的目录和文件名匹配。当部署具有多个项目的功能时,确保您拥有合适的
.gcloudignore文件非常重要,以便您只上传所需的代码。特别是,您几乎应该始终在文件中包含bin/和 ,这样您就不会上传本地构建的二进制文件。obj/.gcloudignore
目录中的示例部署命令行examples:
gcloud functions deploy multi-project \
--runtime dotnet3 \
--trigger-http \
--entry-point=Google.Cloud.Functions.Examples.MultiProjectFunction.Function \
--set-build-env-vars=GOOGLE_BUILDABLE=Google.Cloud.Functions.Examples.MultiProjectFunction
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
616 次 |
| 最近记录: |