2015-07-23 2 views
1

Я работаю над обновлением своего приложения, чтобы использовать драйвер MongoDB 2.0, но попал в дорожный блок, так как MongoDB в настоящее время не выпускает сильно именованную версию сборок. В результате я не могу создать сборку в своем решении, которая регистрируется в кеше глобальной сборки (GAC), потому что GAC требует, чтобы узлы были сильно названы.Ошибка сборки после сборки третьей стороны.

Использование техники, описанной на Ian Picknell's и Ryan Farley's Блоги Я смог назвать имена узлов; MongoDB.Bson.dll,MongoDB.Driver.dll, и MongoDB.Driver.Core.dll. После их сильного подписания я удалил старые ссылки на эти сборки и добавил ссылки на новые сильно названные версии. Когда я пытаюсь построить проект в VS2013, генерируются 2 ошибки (см. Ниже), оба из которых пытаются ссылаться на слабо названную сборку (это мое понимание, потому что ошибка StateKeyToken = null).

Я также попытался построить строго названные сборки прямо из исходного кода, так как MongoDB - это с открытым исходным кодом, но это порождает сотни ошибок, которые я до сих пор работаю.

Error 1 The type 'MongoDB.Bson.BsonDocument' is defined in an assembly that is not referenced. You must add a reference to assembly 'MongoDB.Bson, Version=2.0.1.27, Culture=neutral, PublicKeyToken=null'. 

Error 2 The type 'MongoDB.Driver.IAsyncCursorSource`1<T0>' is defined in an assembly that is not referenced. You must add a reference to assembly 'MongoDB.Driver.Core, Version=2.0.1.27, Culture=neutral, PublicKeyToken=null'. 

ответ

0

Читать тему 331520 и ответ Дирк Фольмар (также дать ему upvote). Ссылка, которую он дает, объясняет проблему, с которой я сталкивался.

Краткое описание проблемы: оригинальные MongoDB.Driver.dll и MongoDB.Driver.Core.dll были построены со ссылкой на неподписанную версию MongoDB.Bson, поэтому мне пришлось обновить ссылки внутри этих DLL должен включать публикацию, которую я использовал для подписи сборок. Все объясняется статьей .NET-fu в разделе Foo, Bar, Baz.

3

Я установил пакет nuget StrongNamer и автоматически подписал беззнаковые зависимости.

Strong Namer автоматически добавит сильные имена для ссылочных сборок, которые еще не имеют сильного имени. Это позволит вам ссылаться и использовать пакеты NuGet с узлами, которые не являются сильным именем из ваших проектов, которые используют сильное имя.

+0

Я должен проверить это. – TheDude

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