Edit3: Извините за постоянные изменения, я уверен, что есть закон, который гласит, что прогресс будет достигнут только после того, как вы публично запросили решение.
Я открыл сборку оракула в Reflector. Сборка включает ссылку как на mscorlib v1.0.3705, так и на mscorlib 2.0.0.0 ...
Он также ссылается на сборку Common.Logging, которая предназначена для среды выполнения v1.0.3705.
Это кажется мне странным. Кто-нибудь когда-либо видел что-то подобное раньше?
Edit2: Хорошо, создано приложение WPF против 3.5. Ссылался на мою библиотеку API, добавил строку для вызова кода, который объявляет переменную типа интерфейса, объявленного в библиотеке Oracle, и все это работает.
Таким образом, проблема возникает только с приложениями Framework 4. Это имеет определенное значение для меня, так как 3.5 по сути 2 с некоторыми дополнительными библиотеками. Но теперь я не совсем понимаю, почему я могу ссылаться на сборку 2 в моем проекте 4 и использовать ее типы, но не на Oracle, и с бесполезной ошибкой.
Редактировать: Кажется, проблема с версией фреймворка. Я удивлен, что не сталкивался с чем-то подобным раньше.
Вот новая ситуация:
Добавлено новое приложение для форм Windows, установленное в Framework 2.
Добавлена ссылка на Coherence DLL в GAC (она никогда не появляется в ссылках под сборками, это плохо?) С использованием пути.
Добавлена кнопка со строкой "INamedCache cache;" Вот и все. скомпилировать и запустить. Все отлично работает.
Шаг 2, удалите ссылку на согласованность, добавьте ссылку на мой оригинальный API. Скомпилируйте, все отлично работает. Помните, что API просто выполняет строку кода выше.
Теперь, если я добавлю ссылку на приложение форм Windows в свое приложение WPF и создам Form1, снова все IntelliSense работает, но при компиляции он выдает «тип или пространство имен не найдено».
Снова удалите «кэш INamedCache»; из Form1 в приложении формы (все еще на которое ссылается приложение WPF), и все это снова компилируется.
Таким образом, мое приложение WPF Framework 4 будет использовать мое приложение windows 2 форм Framework (конечно, с добавленной ссылкой Forms 2), но если приложение Form содержит ссылку на библиотеку оракула И объявляет переменную типа интерфейса, объявленного в этой библиотеке , бум, мгновенный сбой.
Оригинальный пост здесь:
Visual Studio 2010.
У меня есть проект приложения Windows WPF и библиотека классов. Библиотека классов ссылается на согласованность Oracle для сборки .NET. В библиотеке классов есть один класс с одним методом, который объявляет переменную типа интерфейса.
В приложении WPF есть кнопка, которая вызывает этот метод. IntelliSense работает отлично.
Когда я пытаюсь скомпилировать, я получаю старую ошибку «Тип или пространство имен с именем 'WhyAreYouNotWorking' не найден" ». У меня есть демо-проект, который работает, я скопировал ссылки из одной в другую без удачи. Я добавил ссылки на любые вспомогательные сборки.
Также
public void Test()
{
INamedCache cache;
//CacheFactory.SetCacheFactoryConfig("coherence.xml");
//CacheFactory.SetCacheConfig("cache-config.xml");
//CacheFactory.SetPofConfig("pof-config.xml");
//INamedCache cache = CacheFactory.GetCache("ians-cache");
//Console.WriteLine(cache.CacheName);
}
Выше вы видите один метод в моем классе lib. Эта библиотека будет успешно скомпилирована со всеми этими комментариями или комментариями. Приложение WPF будет компилироваться, только если я удалю ВСЕ строки.
Таким образом, проблема в том, что приложение WPF не будет компилироваться со ссылкой на библиотеку классов, если библиотека классов содержит код, содержащийся в сборке Coherence Oracle .net.
Я сбит с толку. Немного смущен и сбит с толку:)