我有一个项目充当第三方.exe 的包装器(它有静态方法来创建命令行并运行可执行文件)。我想在我的解决方案中的至少几个项目中使用它。理想情况下,.exe应该只在那个包装器项目中(我不想将它添加到每个使用它的项目中)。现在,我正在尝试使用在IIS 7上运行的Web项目(.NET MVC),但是当我使用Assembly.GetExecutingAssembly().Location
查看我的包装器调用的目录时,我在一个像这样的文件夹中
C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET 文件\“我 项目“\ 65a016fb \ ac5f20a7 \组件\ DL3 \ d8de0f10 \ 06e277a2_55b2cd01
我的第三方.exe无处可寻。是否可以使用不编译的引用复制文件?
顺便说一句,我已将“复制到输出目录”和“Build Action”属性设置为“始终复制”和“内容”/“资源”/“嵌入资源”目前尚未成功。
答案 0 :(得分:1)
尝试在项目中添加使用包装器的现有文件。出现对话框时,请执行以下操作:
http://wiki.oxygenelanguage.com/en-w/images/0/0d/AddAsLinkAero.png
或者将必要的文件从 Alt 包裹的项目中拖到你的项目中。
这会将文件添加为链接。只要原始文件必须位于唯一的位置,链接就是拒绝的好选择。
将文件作为链接添加到设置到该链接构建操作Content
和Copy always
以将它们复制到输出目录的选项应该适用于您。
答案 1 :(得分:0)
如果有人遇到这个问题,我就是这样做的:
byte[]
的身份访问.exe(至少如果你正在构建一个dll)
Properties.Resources.*NameYouGaveYourResource*
File.Exists()
检查Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
中是否存在该文件(或者您可以使用该方法将exe放在任何位置,上面的内容为.dll所在的目录) ) - 如果没有,请写出文件:using(FileStream fileStream = new FileStream(Path.GetDirectoryName(Assembly.GetExecutingAssembly()。Location)+“\ EXE.exe”,FileMode.CreateNew)){ fileStream.Write(Properties.Resources。 NameYouGaveYourResource ,0,> Properties.Resources。 NameYouGaveYourResource .Length); }
现在您可以轻松地将exe用作Process
。远非理想,但它意味着exe随同你的.dll伴随着它。