--- lang: ja-jp breaks: true --- # `.NET Core` プロジェクト を使用した `WinForm` アプリで、外部ライブラリ中にあるフォームをリンクしして実行すると、「`System.Resources.MissingManifestResourceException: '指定されたカルチャまたはニュートラル カルチャに対して適切なリソースが見つかりませんでした。`」とエラーになる。 2021-11-10 ## ターゲットフレームワークが `net48` の場合に発生する。 ターゲットフレームワークが `net5.0-windows` の場合には発生しない。   ```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`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up