この記事は公開から2年以上経過しています。
Linux(x64)でx64環境用のNuGetライブラリを利用する.NET 6(C#)のプロジェクトをビルドしたとき
warning MSB3270: 構築されているプロジェクトのプロセッサ アーキテクチャ "MSIL" と、参照 "/path/to/nuget_dll" のプロセッサ アーキテクチャ "AMD64" の間には不一致がありました。この不一致は、ランタイム エラーを発生させる可能性があります。プロジェクトと参照の間でプロセッサ アーキテクチャが一致するように、構成マネージャーを使用してターゲットとするプロジェクトのプロセッサ アーキテクチャを変更するか、ターゲットとするプロジェクトのプロセッサ アーキテクチャに一致するプロセッサ アーキテクチャとの依存関係を参照で設定することを検討してください。 [/path/to/project_file]
のようなエラーが発生したため、その対応方法についての備忘録。
解決策
プロジェクトファイルでターゲットプラットフォーム(本例ではx64
)を明示する。
someproject.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<!-- PlatformTargetを明示する -->
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="some-library-x64" Version="1.0.0" />
</ItemGroup>
</Project>
参考ウェブサイトなど
-
Visual Studio Blog
Building on Cross targeting scenarios and 64-bit MSBuild -
Microsoft Docs
MSBuild reference/Error message/MSB3270
以上です。