Информация об изменениях

Сообщение Re[2]: [Mono] Компиляция DLL в рантайме от 02.09.2016 10:42

Изменено 02.09.2016 10:55 Serginio1

Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, Albeoris, Вы писали:


A>>Насколько актуален System.CodeDom.Compiler?

S>Уже всё.

A>>Как это правильно сделать?

S>Основные кросплатформенные варианты описаны тут.

S>P.S. рослин в теории работает под mono, но с документацией ой. Надо у них на форумах детали спрашивать. Или сразу на SO, быстрее будет.

А вот с компиляцией возникли проблемы. Если создаю приложение то все нормально. Но если вызываю через 1С и копирую сборки

Microsoft.CodeAnalysis.dll
Microsoft.CodeAnalysis.CSharp.dll
System.Runtime.Loader.dll

То получаю ошибку

NetObjectToNative : Ошибка в методе DynamicCompile Exception has been thrown by the target of an invocation. System.Private.CoreLib
System.IO.FileLoadException: Could not load file or assembly 'Microsoft.CodeAnalysis, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'Microsoft.CodeAnalysis, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
at NetObjectToNative.NetObjectToNative.DynamicCompile().


Если просто загрузить Сборку через

var asm = System.Runtime.Loader.AssemblyLoadContext.GetAssemblyName(path);
var assembly = Assembly.Load(asm);


NetObjectToNative : Ошибка в методе Сборка Exception has been thrown by the target of an invocation. System.Private.CoreLib
System.IO.FileLoadException: Could not load file or assembly 'Microsoft.CodeAnalysis.CSharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'Microsoft.CodeAnalysis.CSharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.Assembly.Load(AssemblyName assemblyRef)
at NetObjectToNative.NetObjectToNative.НайтиСборку(String Каталог, String ИмяФайла) in D:\MyPrograms\VNCOMP83\TestVK\NetObjectToNative\src\NetObjectToNative\NetObjectToNative.cs:line 390
at NetObjectToNative.NetObjectToNative.Сборка(String ИмяФайла, Boolean ГлобальнаяСборка) in D:\MyPrograms\VNCOMP83\TestVK\NetObjectToNative\src\NetObjectToNative\NetObjectToNative.cs:line 490.

Re[2]: [Mono] Компиляция DLL в рантайме
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, Albeoris, Вы писали:


A>>Насколько актуален System.CodeDom.Compiler?

S>Уже всё.

A>>Как это правильно сделать?

S>Основные кросплатформенные варианты описаны тут.

S>P.S. рослин в теории работает под mono, но с документацией ой. Надо у них на форумах детали спрашивать. Или сразу на SO, быстрее будет.

А вот с компиляцией возникли проблемы. Если создаю приложение то все нормально. Но если вызываю через 1С и копирую сборки

Microsoft.CodeAnalysis.dll
Microsoft.CodeAnalysis.CSharp.dll
System.Runtime.Loader.dll

То получаю ошибку

NetObjectToNative : Ошибка в методе DynamicCompile Exception has been thrown by the target of an invocation. System.Private.CoreLib
System.IO.FileLoadException: Could not load file or assembly 'Microsoft.CodeAnalysis, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'Microsoft.CodeAnalysis, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
at NetObjectToNative.NetObjectToNative.DynamicCompile().


Если просто загрузить Сборку через

var asm = System.Runtime.Loader.AssemblyLoadContext.GetAssemblyName(path);
var assembly = Assembly.Load(asm);


NetObjectToNative : Ошибка в методе Сборка Exception has been thrown by the target of an invocation. System.Private.CoreLib
System.IO.FileLoadException: Could not load file or assembly 'Microsoft.CodeAnalysis.CSharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'Microsoft.CodeAnalysis.CSharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.Assembly.Load(AssemblyName assemblyRef)
at NetObjectToNative.NetObjectToNative.НайтиСборку(String Каталог, String ИмяФайла) in D:\MyPrograms\VNCOMP83\TestVK\NetObjectToNative\src\NetObjectToNative\NetObjectToNative.cs:line 390
at NetObjectToNative.NetObjectToNative.Сборка(String ИмяФайла, Boolean ГлобальнаяСборка) in D:\MyPrograms\VNCOMP83\TestVK\NetObjectToNative\src\NetObjectToNative\NetObjectToNative.cs:line 490.


Хотя копирую те же сборки, что и в приложении. Может ей xx.deps.json нужен для приложения?