Проблемы с компиляцией SignalR 2.0
От: _NN_ www.nemerleweb.com
Дата: 17.01.14 18:44
Оценка:
Компилятор C# справляется:
c:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe a.cs /r:Microsoft.AspNet.SignalR.Core.dll /r:Microsoft.Owin.dll /r:Microsoft.Owin.Security.dll /r:Newtonsoft.Json.dll


А вот Nemerle нет
ncc a.n -r Microsoft.AspNet.SignalR.Core.dll -r Microsoft.Owin.dll -r Microsoft.Owin.Security.dll -r Newtonsoft.Json.dll

error: Can't load types from 'Microsoft.AspNet.SignalR.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. Error: Could not load file or assembly 'Microsoft.Owin, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified..


Ссылки Microsoft.AspNet.SignalR.Core:
// mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
// Microsoft.Owin, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// Microsoft.Owin.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5
// System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a


А вот сами сборки имеют немного другие версии.
Microsoft.Owin: [assembly: AssemblyVersion("2.0.2.0")]

На всякий случай прилагаю все сборки для тестов: http://files.rsdn.ru/16901/dlls.7z
http://rsdn.nemerleweb.com
http://nemerleweb.com
bug reference
Re: Проблемы с компиляцией SignalR 2.0
От: nikov США http://www.linkedin.com/in/nikov
Дата: 17.01.14 19:42
Оценка: 10 (1)
Здравствуйте, _NN_, Вы писали:

_NN>Компилятор C# справляется:

_NN>
_NN>c:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe a.cs /r:Microsoft.AspNet.SignalR.Core.dll /r:Microsoft.Owin.dll /r:Microsoft.Owin.Security.dll /r:Newtonsoft.Json.dll 
_NN>


Если я пробую использовать тип, у которого базовый тип в сборке Microsoft.Owin (версии 2.0.2.0, отличающейся от требуемой 2.0.0.0), то компилятор C# выдает предупреждение:

warning CS1702: Assuming assembly reference 'Microsoft.Owin, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' matches 'Microsoft.Owin, Version=2.0.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35', you may need to supply runtime policy


При попытке запуска без указания runtime policy возникает исключение:

System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Owin, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Re[2]: Проблемы с компиляцией SignalR 2.0
От: _NN_ www.nemerleweb.com
Дата: 18.01.14 01:37
Оценка:
Здравствуйте, nikov, Вы писали:

N>Если я пробую использовать тип, у которого базовый тип в сборке Microsoft.Owin (версии 2.0.2.0, отличающейся от требуемой 2.0.0.0), то компилятор C# выдает предупреждение:

Я установил пакет nuget в проект C#: Microsoft.AspNet.SignalR.
Никаких махинаций не делаю и предупреждений не получаю.

Очевидно я что-то упускаю.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: Проблемы с компиляцией SignalR 2.0
От: nikov США http://www.linkedin.com/in/nikov
Дата: 18.01.14 02:01
Оценка: 10 (1)
Здравствуйте, _NN_, Вы писали:

_NN>Я установил пакет nuget в проект C#: Microsoft.AspNet.SignalR.

_NN>Никаких махинаций не делаю и предупреждений не получаю.

А я просто создал проект и добавил ссылки на сборки, которые ты прислал.

Если же делать через NuGet, то можно увидеть, что в Application.csproj файл прописывается строчка

<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>


В результате, при компиляции в Application.exe.config автоматически добавляется runtime policy:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.2.0" />
      </dependentAssembly>
    </assemblyBinding>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.2.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>


Соответственно, предупреждения не выдаются, а в рантайме все попытки загрузить версии сборок меньшие 2.0.2.0 автоматически редиректятся к версии 2.0.2.0
Re[4]: Проблемы с компиляцией SignalR 2.0
От: _NN_ www.nemerleweb.com
Дата: 18.01.14 05:23
Оценка:
Здравствуйте, nikov, Вы писали:

N>Если же делать через NuGet, то можно увидеть, что в Application.csproj файл прописывается строчка


N>
N><AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
N>


А вот если проект Web, там нигде не прописывается AutoGenerateBindingRedirects.
Есть только в Web.config эти строки.
Но все собирается.

Насколько я понимаю компилятор C# умеет собирать такие сборки, а компилятор Nemerle просто вызывает Assembly.Load и тот выкидывает исключение.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Проблемы с компиляцией SignalR 2.0
От: _NN_ www.nemerleweb.com
Дата: 19.01.14 05:22
Оценка:
Здравствуйте, _NN_, Вы писали:

Нашелся обход проблемы.
Достаточно добавить файл ncc.exe.config (32/64) с этим
Автор: nikov
Дата: 18.01.14
содержимым и все собирается.
Похоже нашлось еще одно ограничение в использование SRE

Предлагаю добавить в компилятор ключ для ссылки на файлы политик, трогать папку Nemerle как-то не хочется.
Есть еще идеи ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Проблемы с компиляцией SignalR 2.0
От: hardcase Пират http://nemerle.org
Дата: 20.01.14 16:27
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Предлагаю добавить в компилятор ключ для ссылки на файлы политик, трогать папку Nemerle как-то не хочется.

_NN>Есть еще идеи ?

Я редиректы в конфиг компилятора руками добавлял, уже не помню для чего, вроде для сборки Найты было нужно когда-то.
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.