---
# System prepended metadata

title: '`.NET Core` プロジェクト を使用した `WinForm` アプリで、外部ライブラリ中にあるフォームをリンクしして実行すると、「`System.Resources.MissingManifestResourceException: ''指定されたカルチャまたはニュートラル カルチャに対して適切なリソースが見つかりませんでした。`」とエラーになる。 2021-11-10'
tags: [リンク, .NET Core, net5.0-windows, net48, System.Resources.MissingManifestResourceException]

---

---
lang: ja-jp
breaks: true
---
# `.NET Core` プロジェクト を使用した `WinForm` アプリで、外部ライブラリ中にあるフォームをリンクしして実行すると、「`System.Resources.MissingManifestResourceException: '指定されたカルチャまたはニュートラル カルチャに対して適切なリソースが見つかりませんでした。`」とエラーになる。 2021-11-10

## ターゲットフレームワークが `net48` の場合に発生する。

ターゲットフレームワークが `net5.0-windows` の場合には発生しない。

![](https://i.imgur.com/9K5LBnK.png)

![](https://i.imgur.com/29gL6e8.png)

```xml=
  <ItemGroup>
    <Compile Include="..\ClassLibrary1\form\**\*.cs" Link="ClassLibrary1\form\%(RecursiveDir)\%(FileName)%(Extension)" />
    <EmbeddedResource Include="..\ClassLibrary1\form\**\*.resx" Link="ClassLibrary1\form\%(RecursiveDir)\%(FileName)%(Extension)" />
  </ItemGroup>
```


## `.NET Core`プロジェクト じゃなくても、レガシープロジェクトで `.NET Framework 4.8` でも同様のエラーが発生する。


## `EmbeddedResourceUseDependentUponConvention`プロパティを`false`に設定すると、`.NET Core`アプリでもエラーとなる。

```xml=
  <PropertyGroup>  
    <EmbeddedResourceUseDependentUponConvention>false</EmbeddedResourceUseDependentUponConvention>
  </PropertyGroup>
```

## `DependentUpon` を設定することで正常に動作する。

> .NET Core 3.0 リソース マニフェストのファイル名の変更
> https://docs.microsoft.com/ja-jp/dotnet/core/compatibility/msbuild#net-core-30
> 
> .NET Core 3.0 より前では、プロジェクト ファイルの `EmbeddedResource` 項目に `LogicalName`、`ManifestResourceName`、または DependentUpon メタデータが指定されなかった場合、MSBuild ではパターン `<RootNamespace>.<ResourceFilePathFromProjectRoot>.resources` でマニフェスト ファイル名が生成されていました。

```xml=
  <ItemGroup>
    <Compile Include="..\ClassLibrary1\form\**\*.cs" Link="ClassLibrary1\form\%(RecursiveDir)\%(FileName)%(Extension)" />
    <EmbeddedResource Include="..\ClassLibrary1\form\**\*.resx" Link="ClassLibrary1\form\%(RecursiveDir)\%(FileName)%(Extension)">
      <DependentUpon>%(FileName).cs</DependentUpon>
    </EmbeddedResource>
  </ItemGroup>
```

###### tags: `.NET Core` `net48` `net5.0-windows` `リンク` `System.Resources.MissingManifestResourceException`
