C#でWindowsアプリケーションを開発していると、次のようなエラーメッセージに出くわすことがあります。
エラー CS0012: 型 ‘Package’ は、参照されていないアセンブリに定義されています。アセンブリ ‘WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=67ah822hj914e20’ に参照を追加する必要があります。
私も実際にこのエラーに遭遇しましたが、Visual Studioで「WindowsBase」アセンブリを参照に追加することで解決できました。この記事では、その手順と注意点をまとめています。
原因:WindowsBaseがプロジェクトに参照されていない
このエラーは、.NET Framework の一部である System.IO.Packaging.Package クラスなどを使おうとした際に発生します。
このクラスは「WindowsBase.dll」に含まれており、参照が設定されていないとコンパイルエラーとなります。
解決策:WindowsBaseをプロジェクトに参照追加する
以下の手順でVisual StudioからWindowsBaseを追加してください。
Visual Studioでの参照追加手順
- Visual Studioで該当プロジェクトを開きます
- ソリューションエクスプローラーでプロジェクト名を右クリック
- [追加]→[参照] を選択
- 「参照マネージャー」が開いたら、**[アセンブリ]→[フレームワーク]**を選択
- 検索ボックスに「WindowsBase」と入力
- 表示された WindowsBase にチェックを入れます
- [OK]ボタンをクリックしてダイアログを閉じます
これで参照が追加され、エラー CS0012 は解消されるはずです。
補足:.NET Core / .NET 5/6/7 を使用している場合の注意点
プロジェクトが .NET Framework ではなく、.NET Core や .NET 5/6/7 の場合、WindowsBase.dllが標準で含まれていない可能性があります。
その場合は以下を検討してください。
- System.IO.Packaging を使用している場合:
WindowsBaseではなく 別のNuGetパッケージの導入が必要なケースがあります(例:System.IO.Packaging)。 - OpenXML SDKを使用している場合:
DocumentFormat.OpenXmlパッケージでPackageクラスを扱うためには、WindowsBaseへの依存関係が必要になることがあります。
関連エラーが出るタイミングの例
このエラーは以下のようなコードを記述したときに出ることがあります。
csharpコピーする編集するusing System.IO.Packaging;
Package package = Package.Open("sample.xlsx", FileMode.Open, FileAccess.Read);
この場合、WindowsBase の参照がなければコンパイルできません。
まとめ
| 項目 | 内容 |
|---|---|
| エラーコード | CS0012 |
| 原因 | 必要なアセンブリ(WindowsBase)がプロジェクトに参照されていない |
| 対応 | Visual StudioからWindowsBaseを手動で参照追加する |
| 補足 | .NET Core系では別パッケージを検討する必要がある |
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
