0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【GCP】不足しているライブラリを Google Cloud Functions に追加する方法(.NET の場合)

Last updated at Posted at 2024-04-23

はじめに

Google Cloud Functions にコードを記述してデプロイしようとすると以下のようなエラーを吐くことがあります。

error CS0246: The type or namespace name '' could not be found (are you missing a using directive or an assembly reference?)

エラー文の通り、コードの一部の記述が Google Cloud Functions 側に存在しないライブラリを参照してしまっていることが原因です。

対処法

このエラーに対しては2ステップで対処できます。

手順1

Google Cloud Functions の状態をローカルで再現して Visual Studio や Rider などの IDE でビルドが通る状態にします。
この状態でプロジェクトのルートディレクトリにある .csproj ファイルを開きます。

TSUBASAMUSU.png

手順2

ローカルの .csproj ファイルにはあって、Google Cloud Functions 側の .csproj ファイルには無い項目を Google Cloud Functions 側の .csproj ファイルに追加します。

この例では以下の4行を Google Cloud Functions 側の .csproj ファイルに追加しています。

  • <ImplicitUsings>enable</ImplicitUsings>
  • <Nullable>enable</Nullable>
  • <PackageReference Include="Google.Cloud.Functions.Framework" Version="1.0.0-beta02" />
  • <PackageReference Include="JWT" Version="10.1.1" />
ローカルの .csproj ファイル
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Google.Cloud.Functions.Framework" Version="1.0.0-beta02" />
    <PackageReference Include="JWT" Version="10.1.1" />
  </ItemGroup>

</Project>
Google Cloud Functions の .csproj ファイル(修正前)
<Project Sdk="Microsoft.NET.Sdk">
 <PropertyGroup>
   <OutputType>Exe</OutputType>
   <TargetFramework>net8.0</TargetFramework>
 </PropertyGroup>

 <ItemGroup>
   <PackageReference Include="Google.Cloud.Functions.Hosting" Version="2.0.0" />
 </ItemGroup>
</Project>
Google Cloud Functions の .csproj ファイル(修正後)
<Project Sdk="Microsoft.NET.Sdk">
 <PropertyGroup>
   <OutputType>Exe</OutputType>
   <TargetFramework>net8.0</TargetFramework>
   <!-- 追加↓ -->
   <ImplicitUsings>enable</ImplicitUsings>
   <!-- 追加↓ -->
   <Nullable>enable</Nullable>
 </PropertyGroup>

 <ItemGroup>
   <PackageReference Include="Google.Cloud.Functions.Hosting" Version="2.0.0" />
   <!-- 追加↓ -->
   <PackageReference Include="Google.Cloud.Functions.Framework" Version="1.0.0-beta02" />
   <!-- 追加↓ -->
   <PackageReference Include="JWT" Version="10.1.1" />
 </ItemGroup>
</Project>

これで Google Cloud Functions でデプロイが通るはずです。
もしこの手順を踏んでも以下のエラー文とともにデプロイに失敗する場合は Google.Cloud.Functions.Hosting のバージョンと Google.Cloud.Functions.Framework のバージョンを一致させるように .csproj ファイルを修正します。

error NU1605: Warning As Error: Detected package downgrade:Google.Cloud.Functions.Framework from 2.0.0 to 1.0.0-beta02. Reference the package directly from the project to select a different version.

Google Cloud Functions の .csproj ファイル(修正後)
<Project Sdk="Microsoft.NET.Sdk">
 <PropertyGroup>
   <OutputType>Exe</OutputType>
   <TargetFramework>net8.0</TargetFramework>
   <ImplicitUsings>enable</ImplicitUsings>
   <Nullable>enable</Nullable>
 </PropertyGroup>

 <ItemGroup>
   <PackageReference Include="Google.Cloud.Functions.Hosting" Version="2.0.0" />
   <!-- 「1.0.0-beta02」から「2.0.0」に変更する↓ -->
   <PackageReference Include="Google.Cloud.Functions.Framework" Version="2.0.0" />
   <PackageReference Include="JWT" Version="10.1.1" />
 </ItemGroup>
</Project>

最後に

株式会社ModelingXについて

image.png

富山県を拠点とするスタートアップ企業、ModelingXは、2022年4月に創業し、「テクノロジーで感動体験を提供する」というミッションを掲げています。当社が開発中の暮らし体験メタバース「MELIFE(ミライフ)」は、バーチャル住宅展示場や銀行相談、家具購入、婚活などができる「地域単位の新たな経済圏」を目指しています。

↓サービスサイトはこちらから↓

ModelingXはリモートワーク&フレックスタイム制を完備。
UnityやUEを共に探求する仲間を全国から募集しています。

↓企業詳細はこちら↓

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?