2013-02-15 55 views
1

我使用LINQPad连接到不同的环境,比如说“本地”和“开发”。连接设置在LINQPad.exe的配置文件中。为什么LINQPad.exe需要调用LINQPad.exe来运行?

要帮我整理我的设置,我想我会做一些LINQPad.exe的副本,与相应的配置文件,像这样重命名它们:

  • LINQPad.local.exe
  • LINQPad.local.config
  • LINQPad.development.exe
  • LINQPad.development.config

但LINQPad.exe在抱怨启动:

该应用程序必须命名为LINKPad.exe才能运行。

这是为什么?

PS显然我不是让如何管理我的配置文件(我有不同的文件夹现在) - 我更好奇的是什么编程的原因有可能是强制执行过程的名字吗?

+3

LINQPad由[Joseph Albahari](http://www.albahari.com/)撰写。他*可能会强制执行此操作,以至于无法重命名并将其重新分配为您自己的。至于具体原因,[问他](http://www.albahari.com/contact.aspx)。他可能会回答。 – 2013-02-15 16:25:00

+0

只需将副本放在单独的文件夹中,让您保留原来的名字... – Will 2013-02-16 04:45:50

+1

好吧,我放弃了。最近的选票是什么?这是一个合理的问题 - 有合理的答案。它如何不具有建设性?我应该建议LINQPad用户不要使用StackOverflow吗? – 2013-02-16 13:15:58

回答

1

如果您查看Reflector中的源代码,您会发现它需要一个特定的名称。

if (Path.GetFileName(Assembly.GetExecutingAssembly().Location).ToLowerInvariant() != "linqpad.exe") 
{ 
    MessageBox.Show("The application must be named LINQPad.exe in order to run.", "LINQPad"); 
} 

它还通过名称引用配置文件,所以它可能执行程序集名称只是为了让事情变得简单。

5

执行此操作的原因是您的查询对LINQPad.exe(对于诸如.Dump())等方法具有依赖性。因此,如果您重命名该文件,CLR将无法找到正确的程序集。

+0

配置的文件名是不是那么难引用重命名的EXE?就像你限制它一样,你可以确定参考。 – leppie 2013-02-16 05:02:07

+1

当您重命名强命名的程序集引用时,CLR不喜欢它 - 在Visual Studio中尝试。 – 2013-02-16 13:12:52

+0

我不知道这一点。但这似乎与强名称无关。从一个小测试中,将原始模块名称的符号链接添加到重命名的程序集中可以使其工作(但几乎不是解决方案; p)。我认为正常的程序集会发生同样的情况。 – leppie 2013-02-16 15:44:24