1

VS2010の何らかの理由で、ファイルをアセンブリに埋め込むことができません。これらのファイルでは、ビルドアクションプロパティが必要に応じて埋め込みリソースに設定されていますが、アセンブリを実行すると、リソースが見つかりません。たとえば、次のテストコード:

string[] list = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames();
string msg = (list.Length > 0) ? "Full" : "Empty";
MessageBox.Show(msg);

GetManifestResourceNames()は常に空のリストを返すため、常に「」と表示されます。

この問題は、ネットティアを使用するプロジェクトに影響します。この場合、ストアドプロシージャをDBに含めるのは不便なので、Procedures.xmlファイルから取得する必要があります。BTWは、ビルドアクション=埋め込みリソースの後に自動的に設定されます。クラスの生成、そしてもちろん、関数がそこからSQLスクリプトを取得しようとすると、プログラムは失敗します。

また、xmlとgifを埋め込もうとしたテストプロジェクトをいくつか作成しましたが、常に成功しませんでした。

更新:問題はC#のみにあるようです。テストプロジェクトをVB.Netで再現しましたが、ファイルは埋め込まれています。出力ウィンドウでは、C#の場合、コンパイラのコマンドラインに/ resourceオプション(埋め込まれるファイルの名前が後に続く必要があります)が含まれていませんが、VBの場合は表示されます。 。

確認する必要があるC#のグローバル設定または構成ファイルはありますか?(プロジェクトのビルドオプションには何も奇妙なことはありません)

誰かが何が起こっているのか、そしてこれを修正する方法についての考えを持っていますか?

4

1 に答える 1

0

最後に、私は原因を見つけました:

Microsoft.CSharp.targetsファイル(c:\ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319内にあります)内に間違った行がありました。次のように書かれたタグがありました:

<EmbeddedResource F Include = "@(_ Temporary)" />

それ以外の

<EmbeddedResource Include = "@(_ Temporary)" />

それを正しく書くと、ファイルを埋め込む機能が復元されました

そのFがどのように表示され、そもそもなぜそのファイルが変更されたのか、私にはわかりません...数年間.NETプログラマーであったにもかかわらず、この問題についてWebを検索した後、今日、「。targets」ファイルに気づきました。 MSBuildのものについて調べる必要はありませんでした。

于 2012-05-30T21:56:22.227 に答える