我最近一直在研究.net核心2.0网络应用程序,并考虑在谷歌云上使用谷歌的App Engine来托管它,但根据教程,谷歌云使用的.net核心1.0不支持我的项目。 有没有什么方法可以在云上使用更新的sdk运行应用程序?
答案 0 :(得分:3)
可悲的是,教程已经过时了。我们现在每天都有.NET Core 1.0,1.1和2.0的运行时映像。我们正在阅读我们的文档并修复它,但这需要一段时间。
根据此更新quickstart中的说明,您需要有一个最小的app.yaml,例如:
env: flex
runtime: aspnetcore
然后,从项目的根目录运行:
dotnet restore
dotnet publish -c Release
将app.yaml复制到发布流程的输出,通常为bin\Release\netcore2.0\publish
,然后使用以下内容部署您的应用:
gcloud beta app deploy bin\Release\netcore2.0\publish\app.yaml
此命令将检测您正在使用的.NET Core版本,并为您构建适当的Docker镜像。
请注意,App Engine Flexible中的.NET Core支持仍然处于测试阶段,我们很快就很难去GA。
答案 1 :(得分:0)
您可以将应用程序部署为自包含应用程序,然后可以在未安装运行时的情况下运行它。
它在ASP.NET核心文档Self-contained deployment without third-party dependencies
中有很好的描述归结为将<RuntimeIdentifier>
或<RuntimeIdentifiers>
元素添加到csproj文件中。
<PropertyGroup>
<RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
</PropertyGroup>
并执行dotnet restore
,然后是dotnet build
。
最后,您可以将其发布到上面定义的平台之一:
dotnet publish -c Release -r win10-x64
dotnet publish -c Release -r osx.10.11-x64
自我部署将从nuget下载所有必需的文件,这包括.NET Core运行时并将其放入输出文件夹。
答案 2 :(得分:0)
确保您具有以下两个文件
,其内容显示在项目的根目录下。
app.yaml
env: flex
runtime: custom
Dockerfile
FROM [DOCKER_IMAGE_URL]
COPY . /app
WORKDIR /app
EXPOSE 8080
ENV ASPNETCORE_URLS=http://*:8080
ENTRYPOINT ["dotnet", "[NAME_OF_PROJECT].dll"]
请记住将[NAME_OF_PROJECT]
替换为项目名称,并将[DOCKER_IMAGE_URL]
替换为以下网址之一:
https://hub.docker.com/_/microsoft-dotnet-core-aspnet/
例如:mcr.microsoft.com/dotnet/core/aspnet:3.0
for ASP.NET Core 3.0
要使我们在第1部分中创建的文件可以使用,需要在运行build命令时将它们复制到output / build目录。
这可以通过添加以下内容来完成
<ItemGroup>
<None Include="app.yaml" CopyToOutputDirectory="PreserveNewest" />
<None Include="Dockerfile" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
到您的.csproj
文件。
现在,当我们运行build命令时,对于发行版,它们将被复制到./bin/Release/netcoreapp[VERSION]/publish
中,对于调试版本,它们将被复制到./bin/Debug/netcoreapp[VERSION]
中。
其中[VERSION]
是您使用的ASP.NET Core版本。
从此处,使用Google Cloud SDK as usual.
进行部署感谢: