2010-02-24 63 views
3

我想引用LINQPad.exe,.NET可執行文件,so that my code can make use of its wonderful .Dump() extension method部署。添加對exe的引用允許我在開發機器上使用以下代碼,但它會中斷ClickOnce(「清單中的引用與下載的程序集LINQPad.exe的標識不匹配。」)。參考的exe文件.NET程序集和使用ClickOnce

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似乎不是一個選項。

+0

重新標記:加上「.NET」 – AndreyAkinshin 2010-02-24 17:15:18

+0

這可能是與被IL合併成LINQPad.exe組件的量的問題。 – 2010-02-24 17:23:07

+0

@Tom,可能是這種情況,但我看到其他人遇到帖子時遇到了不同的前綴。也許這只是ClickOnce不允許的。 – Pat 2010-02-24 17:33:06

回答

1

LINQPad EULA不允許你不從LINQPad的所有者書面許可重新分配。

你不能做你想做的事,因爲它是非法的。

然而,拆卸可執行滿足你的好奇心本身授予該網站的權限。因此,我建議您對Dump()進行反向工程,並將其作爲單獨的庫供所有人使用,並將其發佈到Codeplex

+0

LINQPad的開發商已經回答了有關使用轉儲方法的問題 - 看看在第一個鏈接問題(Joe Albahari是開發者)。 – Pat 2010-02-24 21:51:14

+1

我看到了;我想他是建議你只將它用於開發場景。你真的需要它在生產部署?如果你這樣做,你就重新分配產品,這違反了EULA。我強烈建議你考慮對其進行逆向工程。 – Randolpho 2010-02-24 21:56:05

+0

我不需要它在生產部署中。查看LINQPad.Util的依賴關係圖(使用.NET Reflector)。CreateXhtmlWriter方法顯示將會有很多逆向工程需要。我不願意花費所需的時間來做到這一點。 – Pat 2010-02-24 23:31:49

0

不知道有關LinqPad,這裏是一個在黑暗中刺傷:

你可以試試這個:(不承諾)我假設你正在引用在您的項目。

將linkqpad.exe添加到您的項目中。將構建操作設置爲none,將copy-to-output-directory設置爲false。

如果有對它的引用,刪除你參考吧,將你的參考你只是包含在你的項目中的文件指向。這樣,它將引用本地副本而不是GAC中的副本。如果您沒有對其的引用,請將構建操作設置爲「content」,並將copy-to-output-directory設置爲false。然後,你在哪裏調用它,在本地尋找它。

這是你如何將一般部署第三方DLL本地,而不是在GAC安裝它(適用於DirectX的,但不適合的Infragistics)。我不知道它是否會爲一個exe工作...

RobinDotNet

+1

感謝您的建議,但問題在於我已經在本地引用exe的事實。該文件很好地複製到ClickOnce部署文件夾中,但應用程序啓動器由於清單衝突而失敗。如果我從GAC引用該exe文件,我認爲我不會遇到這個問題。 – Pat 2010-03-09 15:45:38

+0

而且您無法將其安裝在GAC中,因爲這不合法,對吧? – RobinDotNet 2010-03-10 09:53:05

+0

我不確定將其安裝在GAC中的合法性。這可能是一個好的解決方法。 LINQPad作爲一個單獨的exe而不是安裝程序。我會環顧四周,看看如何在GAC中安裝它。感謝這個想法。 – Pat 2010-03-25 19:57:34

相關問題