2008-10-13 3 views
17

Можете ли вы смешивать языки .net в рамках одного проекта? Поэтому, предварительно скомпилированный, я хотел бы назвать классы и методы других исходных файлов.Можете ли вы смешивать языки .net в рамках одного проекта?

Для Интернета и приложений?

В частности, меня будут интересовать F # и C#.

ответ

15

Вы можете смешать языки один узел с ILMerge и MSBuild.

Here - очень хороший пример.

+3

аккуратный трюк, но вам все равно придется создавать отдельные проекты для каждого языка, который был то, что заданный вопрос - хорошо знать о материале слияния после сборки, хотя, спасибо за ссылку! – 2008-10-13 04:53:50

+2

Да, это правда, однако в ASP.NET вы можете смешивать языки, а Visual Studio делает трюк ... http://tinyurl.com/4g9ohv – CMS 2008-10-13 05:07:33

2

Вы можете указать язык в каждом проекте сборки (библиотеки DLL) и использовать некоторые из них в том же растворе, но я не думаю, что вы можете смешивать языки в одной и той же сборки

+1

я исправлюсь - вы можете объединить сборки на разных языках, в одну сборку – 2008-10-13 05:34:49

2

Вы можете сделать это в проекте веб-сайта по сравнению с компиляционным проектом: http://www.aspnetlibrary.com/articledetails.aspx?article=Use-C-Sharp-and-VB.NET-in-the-same-project. Встроенный веб-сайт BuildProvider решает языковые элементы «на лету».

.NET BuilderProvider все еще недоступен для проектов, отличных от веб-сайтов, поэтому вам не повезло с обычным приложением смешанного Intellisense.

8

CMS упоминает интересный подход, но на самом деле я предлагаю вам упростить и иметь разные сборки (проекты) для кода C# и F #. Имеются хорошо документированные точки связи между C# и F # (например, here и here). Я рекомендовал бы их вместо этого. Различия между C# и F # (особенно с F # с разным временем выполнения!) Довольно велики ...

11

Да, вы можете, но Visual Studio не поддерживает его напрямую. Что вы будете делать, это компилировать код для netmodules, а затем объединить их в одну сборку. Компиляторы поддерживают параметр «/ target: module», который генерирует эти сетевые модули.

Затем вы можете использовать компиляторы для ссылки на другие сетевые модули при строительстве или использовать Assembly Linker (Al.exe). Для него существует даже задача msbuild: AL (Assembly Linker) Task.

Полный обзор представлен на сайте MSDN: How to: Build a Multifile Assembly

Смежные вопросы