0

如果我从网络驱动器右键单击我的应用程序并选择运行方式 | 当前用户,应用程序是否运行取决于我是否单击子复选框(“保护我的计算机和数据免受未经授权的程序活动”)。

如果我确实选择了“保护我的计算机...”复选框,然后选择“确定”按钮,我会得到“无法找到运行此应用程序的运行时版本”。

但是,如果我取消选中该复选框,它运行正常。

因此,.NET 运行时显然被认为是“未经授权的程序活动”。

如果我从另一个用户的机器上从同一个地方(既不是我的也不是用户的 C: 驱动器的映射驱动器上的文件夹)运行这个应用程序,它根本不会启动,并给我一个 iofileloadexception 错误。但是 AFAIK,应用程序所需的 .DLL 已复制到映射驱动器的文件夹,以及启动过程引用的文本文件。是否有工具可以显示需要使用 Visual Studio (2010) 创建的 C# .exe 分发哪些辅助文件?IOW,这样的工具应该告诉我我需要 log4net.dll、自定义内部框架 .DLL 和上述文本文件。或许还有一些其他的东西,当部署时,它会允许应用程序在用户的机器上运行。

更新

好的,我想我可能正在“步入正轨”,因为我能够确定需要使用给定的 .exe 部署哪些文件:

如果您选择项目 | 属性 | 发布 | Visual Studio 中的应用程序文件,它似乎向您显示了您需要与您的应用程序一起部署的文件。但是,仍然存在一些问题(在下面的括号中注明;以及最后的重磅炸弹):

EXE and related files:

1) <appName>.exe (duh, AKA "doh")
2) <appName>.exe.config
3) <appName>.exe.manifest (I have no such file - although I do have a file named
<appName>.vshost.exe.manifest; should I rename it by stripping out the "vshost" part of the name?)
4) <appName>.ico

DLLs:

Any non-native DLLs your project uses, such as (in this case):

<customFrameworkAssembly>.dll
log4net.dll
Devart.Data.dll
Devart.Data.Oracle.dll

但是,它没有解释为什么我能够从另一个开发人员的机器上运行该应用程序(即使这些文件尚未部署到共享网络目录)。

4

1 回答 1

0

您需要部署的文件可以从 Visual Studio 中的项目中通过选择 Project | 查看。属性 | 发布 | 申请文件...

一旦你将它们移动到与 .exe 相同的位置,世界就一切正常了(好吧,无论如何,这只是你小世界的一小部分)。

于 2012-06-26T15:50:13.603 回答