我正在使用C#4.0。我如何强烈引用.exe文件?
我正在使用Microsoft.VisualStudio.TestTools.UnitTesting
运行单元测试。
我的UnitTest项目测试另一个项目,比如ProjectA。项目A创建了这样一个过程:
Process mplex = new Process();
psi = new ProcessStartInfo();
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
psi.RedirectStandardError = true;
psi.FileName = "cmd.exe";
psi.Arguments = "/C mplex omittedForBrevity";
mplex.StartInfo = psi;
mplex.Start();
/* This is telling me: "'mplex' is not recognized
* as an internal or external command, operable
* program or batch file." */
var a = mplex.StandardError.ReadToEnd();
我放在“MPLex.exe”内的各种彬的,包括“AppDomain.CurrentDomain.BaseDirectory”(这是的\ bin \调试\文件夹我的单元测试项目)。
MPLex.exe基本上是Microsoft的GPLEX衍生产品,它是Flex/Lex的C#版本。当我在ProjectA中添加对MPLex.exe的引用并在Object浏览器中查看它时,我没有看到任何看起来像Main
的方法,或者与之连接的公共方法,否则我会这样做而不是通过cmd调用它正如我上面所做的那样。
我认为发生了什么是它正在进行单元测试,它不是搜索\ bin \ Debug \目录。当我在非单元测试ProjectB中的Main方法中运行ProjectA中的相同代码时,它工作正常。如果我能以某种方式强烈引用.exe,以便在需要时将它复制到任何地方,那么我认为我的问题将得到解决。我怎样才能做到这一点?
编辑:
添加这个固定的,但就我所知,我可能刚分手别的尚未作出自己知道,但。
System.IO.Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
你可以只添加一个引用mplex在测试项目中?此外,mstest不会运行bin外的测试,它会在运行之前复制到部署目录。 – 2012-07-22 06:00:55
我没有在我的测试项目中添加对MPLex.exe的引用。然而,一旦我做到了,它仍然无法工作。我怀疑引用的DLL和EXE的不复制,除非编译器/链接器/无论什么决定,他们实际上*使用*。至少不要在本单元测试使用的\ out \ bin目录下。 – 2012-07-22 06:38:33