引用exe作为.NET程序集并使用ClickOnce进行部署

时间:2010-02-24 17:09:15

标签: .net deployment clickonce

我正在尝试引用LINQPad.exe,一个.NET可执行文件so that my code can make use of its wonderful .Dump() extension method。添加对exe的引用允许我在我的开发机器上使用以下代码,但它会破坏ClickOnce(“清单中的引用与下载的程序集LINQPad.exe的标识不匹配。”)。

public static string DumpString<T>(this T o)
{
    var w = LINQPad.Util.CreateXhtmlWriter();
    w.WriteLine(o);
    return w.ToString();
}

有谁知道如何引用.exe并使用ClickOnce(或类似的简单方法)部署它?请注意,我不能只包含.exe并将其称为进程 - 我需要将其作为API引用。此外,LINQPad.exe具有assemblies inside of it,当尝试在文件上使用ILMerge时会导致问题,因此ILMerge似乎不是一个选项。

2 个答案:

答案 0 :(得分:1)

未经LINQPad所有者的书面许可,LINQPad EULA不允许您重新发布。

您不被允许做您想做的事,因为它是非法的。

但是,网站上有权限反汇编可执行文件以满足您自己的好奇心。因此,我建议您对Dump()进行反向工程并将其作为单独的库发布到Codeplex以供所有人使用。

答案 1 :(得分:0)

不知道LinqPad,这是在黑暗中刺伤:

你可以试试这个:(没有承诺)我假设你在你的项目中引用它。

将linkqpad.exe添加到您的项目中。将构建操作设置为none,将copy-to-output-directory设置为false。

如果您有对它的引用,请删除对它的引用,将引用设置为指向您刚刚包含在项目中的文件。这样,它将引用本地副本而不是GAC中的副本。如果您没有对它的引用,请将构建操作设置为“content”,并将copy-to-output-directory设置为false。然后你在哪里调用它,在本地寻找它。

这就是你通常在本地部署第三方dll而不是在GAC中安装它的方法(适用于DirectX,但不适用于Infragistics)。我不知道它是否适用于exe ...

RobinDotNet