Ссылка на исполняемый файл как сборку .NET и развертывание с ClickOnce - PullRequest
3 голосов
/ 24 февраля 2010

Я пытаюсь сослаться на LINQPad.exe, исполняемый файл .NET, , чтобы мой код мог использовать его замечательный метод расширения .Dump () . Добавление ссылки на исполняемый файл позволяет мне использовать следующий код на моем компьютере разработчика, но он ломает 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 содержит сборок внутри него , которые вызывают проблемы при попытке использовать ILMerge для файла, поэтому ILMerge не представляется возможным.

Ответы [ 2 ]

1 голос
/ 25 февраля 2010

EULA LINQPad не позволяет вам распространять без письменного разрешения владельца LINQPad.

Вам не разрешено делать то, что вы хотите сделать, потому что это незаконно.

Однако на сайте предоставлено разрешение на разбор исполняемого файла для удовлетворения вашего собственного любопытства. Поэтому я рекомендую вам перепроектировать Dump () и опубликовать его в Codeplex в качестве отдельной библиотеки для всех пользователей.

0 голосов
/ 09 марта 2010

Не зная о LinqPad, вот удар в темноте:

Вы можете попробовать это: (без обещаний) Я предполагаю, что вы ссылаетесь на это в своем проекте.

Добавьте linkqpad.exe в ваш проект. Установите для действия сборки значение none, установите для параметра copy-to-output-directory значение false.

Если у вас есть ссылка на нее, удалите ссылку на нее, установите ссылку на файл, который вы только что включили в свой проект. Таким образом, он будет ссылаться на локальную копию, а не на копию в GAC. Если у вас нет ссылки на него, установите для действия сборки значение «content» и установите для параметра copy-to-output-directory значение false. Тогда, где вы звоните, ищите это локально.

Именно так вы обычно развертываете сторонние dll локально, а не устанавливаете их в GAC (работает для DirectX, но не для Infragistics). Я не знаю, будет ли это работать для exe ...

RobinDotNet

...