我试图从 C# 程序运行 VS2012 附带的链接器,但是当链接器运行时我收到一条错误消息,提示缺少 mspdb110.dll。为什么从 C# 进程运行 exe 会导致此问题?它可以从命令行正常工作(其他任何地方!)。这是一段代码,它完全按预期工作,但 link.exe 抱怨。我不想做任何花哨的流程操作,我只是想从一个论点开始。所以问题是 C# 正在做什么来防止 link.exe 找到一个 dll。其次,为什么link.exe需要这个调试相关的dll才能运行?最后,我应该如何解决这个问题?哦,为了清楚起见,给出错误的是link.exe,仅此而已。
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!");
}
}