Я використовую конкретну команду в своєму C # коді, який добре працює. Однак, як кажуть, неправильно поводитись у "некерованому" коді.
Що таке керований чи некерований код?
Я використовую конкретну команду в своєму C # коді, який добре працює. Однак, як кажуть, неправильно поводитись у "некерованому" коді.
Що таке керований чи некерований код?
Відповіді:
Ось текст із MSDN про некерований код .
Деякий код бібліотеки потребує входу в некерований код (наприклад, API нативного коду, наприклад, Win32). Оскільки це означає, що для керованого коду виходять за межі периметра безпеки, необхідна обережність.
Ось кілька додаткових пояснень щодо керованого коду:
Для вашої проблеми:
Я думаю, це тому, що NUnit виконує ваш код для UnitTesting і може мати частину його, яка не управляється. Але я не впевнений у цьому, тому не бери це за золото. Я впевнений, що хтось зможе дати вам більше інформації про це. Сподіваюся, це допомагає!
Це гарна стаття про цю тему.
Узагальнити,
Прикладна програма, яка виконується в межах двигуна виконання, встановленого в одній машині. Програма не може працювати без неї. Середовище виконання забезпечує загальну бібліотеку програмних процедур, які програма використовує і зазвичай виконує управління пам'яттю. Він також може забезпечити перетворення в JIT (термін в часі) з вихідного коду у виконуваний код або з проміжної мови у виконуваний код. Java, Visual Basic та .NET загальна мова виконання (CLR) - приклади двигунів виконання. ( Детальніше )
Виконавча програма, яка працює сама по собі. Запущена з операційної системи, програма вимагає і використовує програмні процедури в операційній системі, але не вимагає використання іншої програмної системи. Програми мовної збірки, зібрані в машинну мову, та програми C / C ++, зібрані в машинну мову для певної платформи, є прикладами некерованого коду. ( Детальніше )
Коли ви думаєте про некерований , подумайте про код машини на рівні машини. Як і мова монтажу x86. Некерований (рідний) код збирається та пов'язується для запуску безпосередньо на процесорі, для якого він був розроблений, виключаючи на даний момент усі елементи ОС. Це не портативно, але це швидко. Дуже простий, знятий код.
Керований код - це все, починаючи від Java до старого Interpretive BASIC, або все, що працює під .NET. Керований код, як правило, компілюється в P-код проміжного рівня або набір інструкцій байтового коду. Це не специфічні для машини інструкції, хоча вони схожі на мову складання. Керований код ізолює програму від машини, на якій вона працює, і створює захисну межу, в якій вся пам’ять розподіляється опосередковано, і взагалі кажучи, у вас немає прямого доступу до машинних ресурсів, таких як порти, адресний простір пам'яті, стек тощо Ідея полягає у запуску в більш безпечному середовищі.
Щоб перетворитись із керованої змінної, скажімо, у некеровану, потрібно дістатись до власне об'єкта. Ймовірно, загорнуті або упаковані в якусь додаткову упаковку. Не керовані змінні (наприклад, 'int', скажімо) - на 32-бітній машині - займають рівно 4 байти. Немає накладних або додаткових упаковок. Процес переходу від керованого до некерованого коду - і знову - називається " маршалінг ". Це дозволяє вашим програмам перейти межу.
Як можна менше слів:
Керований код - це те, що створюють компілятори C # .Net, VB.Net, F # .Net тощо. Він працює на CLR, який, крім усього іншого, пропонує такі послуги як вивезення сміття, перевірка довідок та багато іншого. Тож подумайте так, моїм кодом керується CLR.
З іншого боку, некерований код збирається безпосередньо до машинного коду. Це не управляє CLR.
Керований код:
Код, який працює за "договором про співпрацю" із загальною мовою виконання. Керований код повинен надавати метадані, необхідні для виконання для надання таких послуг, як управління пам'яттю, інтеграція між мовою, захист доступу до коду та автоматичне управління об'єктами протягом усього життя. Весь код на основі проміжного мови Microsoft (MSIL) виконується як керований код.Некерований код:
Код, який створюється без урахування конвенцій та вимог загальної мови виконання. Некерований код виконується в загальному мовному середовищі виконання з мінімальними послугами (наприклад, відсутність вивезення сміття, обмежена налагодження тощо).
Довідка: http://www.dotnetspider.com/forum/11612-difference-bet between-managed-and-unmanaged- code.aspx
Керований код працює всередині середовища CLR, тобто .NET runtime. Коротше кажучи, всі IL управляються кодом. Але якщо ви використовуєте сторонні програмні продукти, наприклад VB6 або VC ++, вони керують кодом, оскільки .NET runtime (CLR) не має контролю над виконанням мови вихідним кодом.
Керований код: - Код, форма MSIL (проміжна мова) розробляється після складання компілятора мови та безпосередньо виконується за допомогою CLR
називаного керованого коду. наприклад: - Всі 61 мовний код, підтримуваний .net Framework
Некерований код: - код, розроблений раніше, .net
для якого форма MSIL недоступна, і виконується CLR
безпосередньо, а CLR
перенаправить на операційну систему, це відоме як некерований код.
наприклад: API -COM, Win32
Перш за все, це розуміємо, перед тим .NET framework
, Microsoft
як пропонували окремі продукти, як-то MFC (Visual C++), VB, FoxPro
і т.д.
У 2002 році Microsoft об'єднала свої продукти і створила .NET Framework. Тепер існує різниця між тим, як виконувався код раніше, і тим, як керується кодом і виконується в .NET Framework. Microsoft представила концепцію CLR
.NET Framework, яка компілює код, що надходить з будь-якої підтримуваної ланцюги .NET Framework та надає додаткові функції, наприклад, memory mangement, garbage collection
тощо. Але такі функції CLR раніше не були доступні безпосередньо.
Отже, якщо ви створюєте бібліотеку / код у .NET Framework (компілюється з CLR), тоді це називається
Managed code
. Ви можете використовувати цю бібліотеку далі в іншому додатку / проект .NET, і там CLR зрозуміє, як вона була складена раніше, і тому вона залишається вашим кодом управління.
OTOH, якщо ви хочете використовувати бібліотеки, написані до .NET Framework, то ви можете робити певні обмеження, але пам’ятайте, оскільки CLR тоді не було, тому CLR не зрозуміє і не скомпілює цей код ще раз . І це буде називатисяunmanaged code
. Зауважте, що бібліотеки / збірки, створені третьою стороною для надання певних функцій / інструменту, також можуть розглядатися як некерований код, якщо це не сумісність CLR.
По-простому, керування кодом - це те, що ваш CLR розуміє, і може скласти його самостійно для подальшого виконання. У .NET Framework (з будь-якої мови, що працює на .NET Framework) Коли код переходить до CLR, тоді код надає деяку інформацію мета-даних, щоб CLR може надавати вам вказані тут функції . Мало з них і Garbage collection, Performance improvements, cross-language integration, memory management
т.д.
OTOH, некерований код - це щось специфічне для машини та готове до використання, не потрібно його додатково обробляти.
З Pro C # 5 та .NET 4.5:
Керований проти некерованого коду: Мабуть, найважливіший момент, який потрібно зрозуміти про мову C #, - це те, що він може створювати код, який може виконуватись лише протягом .NET часу виконання (ви ніколи не можете використовувати C # для створення рідного COM-сервера або некерованого C / C ++ додаток). Офіційно кажучи, термін, який використовується для опису коду, орієнтованого на .NET виконання, управляється кодом. Двійкова одиниця, що містить керований код, називається збіркою (детальніше про збірки лише трохи). І навпаки, код, який не може бути безпосередньо розміщений в ході виконання .NET, називається некерованим кодом.