我試圖從一個C#程序運行VS2012附帶的鏈接器,但我得到一個錯誤,說當鏈接器運行時mspdb110.dll丟失。爲什麼從C#進程中運行exe導致這個問題?它從命令行(從其他地方到!)工作正常。下面是一段代碼,它的工作原理與預期完全相同,但link.exe抱怨。我不想做任何奇特的流程操作,我只想用一個參數開始。所以問題在於C#阻止link.exe找到dll。其次,爲什麼link.exe需要這個調試相關的DLL來運行?最後,我應該如何解決這個問題?哦,只是爲了弄清楚它是給出錯誤的link.exe,沒有別的。VS2012 link.exe從命令行運行,但不是從C#的System.Diagnostics.Process運行?
private void buildButton_Click(object sender, EventArgs e)
{
string linkerPath = null;
if (File.Exists((linkerPath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86) +
"\\Microsoft Visual Studio 11.0\\VC\\bin\\link.exe")))
{
ProcessStartInfo linkInfo = new ProcessStartInfo(linkerPath);
linkInfo.Arguments = "/subsystem:" + subsystemComboBox.Text + " ";
//node.Text is the full file path
foreach (TreeNode node in treeNodes.CSArray)
{
linkInfo.Arguments += "\"" + node.Text + "\" ";
}
linkInfo.Arguments += librariesRichTextBox.Text;
//complete example arg string: /subsystem:console "C:\testdir\test.obj" msvcrt.lib
try
{
Process linkProcess = Process.Start(linkInfo);
linkProcess.WaitForExit();
linkProcess.Close();
}
catch (Exception err)
{
MessageBox.Show(err.Message, "Error!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("the VS linker wasnt found!");
}
}
工作,如果工作目錄設置爲 「C:\ Program Files文件(x86)的\微軟的Visual Studio 11.0 \ Common7 \ IDE」,這是該dll是。現在我只需要弄清楚鏈接器是如何處理可執行文件的,即使鏈接器沒有提供任何錯誤,也無處可尋。 – kbzombie
大多數程序傾向於將它們粘貼在文件來自的目錄或工作目錄 – Sayse
無處可尋,它們不存在。我不知道發生了什麼事?鏈接器沒有提供任何錯誤。 – kbzombie