3

で新規作成.exeしていWPF formsます。問題は、いくつかのアセンブリを参照する必要があることです。

これは私がそれらを追加する方法です:

var p = new CompilerParameters
{
    GenerateExecutable = true,
    TreatWarningsAsErrors = false,
    CompilerOptions = "/t:winexe",
    IncludeDebugInformation = false,
    OutputAssembly = dlg.FileName,
};


string[] assemblies = {
    "System", "System.Core", "System.Data", "mscorlib",
    "System.Drawing", "System.Windows.Forms", "Microsoft.CSharp",
    @"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsBase",
    @"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationCore",
    @"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationFrameWork"
};

foreach (string a in assemblies)
{
    p.ReferencedAssemblies.Add(a + ".dll");
}

Windowsbase.dllこれは正常に動作していますが、 、、 の絶対パスを入力する必要があることに気付くでしょう。そうしないPresentationCore.dllPresentationFrameWork.dll、見つからないためエラーがスローされます。これはおそらくすべてのコンピューターで機能するとは限りません。

どうすればいいですか?

(プロジェクト フォルダーに 3 を含めて、.dllそれらをアプリケーションと共に出荷し、相対パスを参照するだけでよいと思います (動作するかどうかは今はテストできません)。しかし、他の方法はありますか?)

4

2 に答える 2

0

問題のあるアセンブリがGAC (Global Assembly Cache)に登録されていることを確認する必要があります。これは、絶対パスが指定されていない場合にアプリケーションが最終的に検索する場所であるためです。

を参照して、GAC に登録されているアセンブリを確認できます (これが Windows のインストール ディレクトリであるとC:\Windows\Assembly仮定します)。C:\Windows

于 2012-07-22T22:26:50.263 に答える