2012-10-25 38 views
6

我有一个项目充当第三方的包装器.exe(它有静态方法来创建命令行并运行可执行文件)。我想在我的解决方案中至少有几个项目中使用它。理想情况下,.exe应该只在该包装项目中(我不想将它添加到每个使用它的项目中)。现在我试图得到这个与IIS 7上运行的Web项目(.NET MVC)一起工作,但是当我使用Assembly.GetExecutingAssembly().Location来查看我的包装被调用的目录时,我在一个文件夹中,如如何通过C#中的另一个项目引用已编译的项目来复制非代码文件

C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \临时ASP.NET 文件\ “我 项目” \ 65a016fb \ ac5f20a7 \装配\ DL3 \ d8de0f10 \ 06e277a2_55b2cd01

和我的第三党的.exe无处可查。是否有可能复制文件与不编译的引用?

顺便说一句,我已经设置了“复制到输出目录”“建设行动”我的.exe的属性“始终复制”“内容” /“资源” /“嵌入的资源“到目前为止没有成功。

+0

好吧,'.Location()'返回奇怪的路径,但到底是什么Environment.CurrentDirectory'说'? – AgentFire

+0

如果我记得,CWD在C:\ Windows \ System32中。 – DannyH

+0

您的第三方.exe在那里? – AgentFire

回答

1

尝试在使用包装器的项目中添加现有文件。当对话框出现,这样做:

http://wiki.oxygenelanguage.com/en-w/images/0/0d/AddAsLinkAero.png

要么或者neccessary文件从包裹着Alt键 holded者拖动到你的项目。

这会将文件添加为链接。只要原始文件必须位于唯一位置,链接就是不错的选择。

将文件作为链接添加到该链接生成操作到ContentCopy always以将它们复制到输出目录的选项应该适用于您。

+0

感谢您的想法,但不幸的是这并不适合我 - .exe仍然不会出现在我的“Temporary ASP .NET Files”目录/子目录中。我确保将链接文件属性更改为“Build Action”=“Content”和“Copy to output dir”=“Always”。我开始认为这是我需要在IIS中进行的更改,以便将文件移动到该临时目录中。 – DannyH

0

如果有人运行到这个问题,以下是我周围如何到达:

  • .exe文件添加到您的项目资源(工程, 属性右击 - >资源,添加文件,并给它的资源名称)
  • 您现在可以访问您的.exe作为byte[](至少如果你正在构建一个DLL) 与Properties.Resources.*NameYouGaveYourResource*
  • 使用您的.exe之前,请使用File.Exists()检查文件是否存在在Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)(或你c一放,无论你想使用该方法的exe文件,上面让你目录的.dll文件中) - 如果不是,写出来的文件:使用(的FileStream FILESTREAM =新的FileStream(Path.GetDirectoryName

( Assembly.GetExecutingAssembly()。位置)+“\ EXE.exe”,FileMode.CreateNew)){file.stream(Properties.Resources。 NameYouGaveYourResource,0,> Properties.Resources。 NameYouGaveYourResource。长度); }

现在你可以很容易地使用exe作为Process。离理想很远,但这意味着exe文件伴随着你的.dll,无论它走到哪里。

相关问题