我正在創建一個新的.exe
與WPF forms
。問題是,我需要引用一些程序集。CodeDom ReferencedAssembly絕對路徑
這是我如何將它們添加:
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.dll
和PresentationFrameWork.dll
,否則,因爲他們會拋出錯誤未找到。 這可能不適用於所有電腦。
我該怎麼辦? (我想我可以在項目文件夾中包含3 .dll
的這些文件,並將它們與應用程序一起發送並引用相對路徑(如果它工作,我現在不能測試它),但是有沒有其他方法?)
您確定這些程序集是在GAC中註冊的嗎?這可能是爲什麼他們沒有找到其他的原因。 – 2012-07-22 22:22:51
您對GAC有何意義?在VS或.NET Framework中沒有改變任何東西。 – Mek 2012-07-22 22:25:41