Я делаю плагин для фотошопа с использованием C ++ / CLI. Некоторые файлы в проекте скомпилированы в собственный код, а один файл — в управляемый код. Из-за этого я не могу добавить ссылку на сборку на уровне проекта, а скорее на уровне файла через #using
заявление.
Я ссылался System.dll
, Windows.dll
, PresentationFramework.dll
а также WindowsBase.dll
успешно. (Есть некоторые проблемы с intellisense, который не хочет загружать метаданные, но компилирует без ошибок. Я решил проблему с intellisense, указав полное имя сборки.)
Тем не менее, я не могу добавить ссылку на мою собственную сборку без фреймворка. Когда я загружаю плагин в Photoshop и отлаживаю его, я получаю следующую ошибку>
Произошло необработанное исключение типа «System.IO.FileNotFoundException» в неизвестном модуле.
Дополнительная информация: Не удалось загрузить файл или сборку ‘ColorPickerControl, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = 2317994184a7a708’ или одну из ее зависимостей. Система не может найти указанный файл.
Я пытался изменить целевой фрейм моей библиотеки, чтобы сделать сборку общей (общедоступной) — следовательно PublicKeyToken
не является нулевым — для возврата имени других сборок к их короткому имени (я изменил их, потому что intellisense не загружал метаданные). Не сработало
Какие-либо предложения? Это может быть проблемой с целевой структурой, но я не знаю, что следует указывать в качестве целевой структуры. Это C ++ / CLI — нет диалога свойств, как в C #, где вы можете легко выбрать целевой фреймворк.
Мой код:
#using <System.dll>
#using <PresentationCore.dll>
#using <PresentationFramework.dll>
#using <WindowsBase.dll>#using <C:\Users\Bogdan\Desktop\ColorPickerControl.dll>using namespace System;
using namespace System::Windows;
using namespace System::Windows::Controls;
using namespace System::Windows::Media;
//using namespace ColorPickerControlNamespace;char __cdecl fManaged2(const char* input)
{Window^ w = gcnew Window();
Label^ l = gcnew Label();
l->Content = "This works!";
l->Background = Brushes::Orange;
TextBox^ txt = gcnew TextBox();
txt->Width = 300;
txt->Height = 25;
Grid^ g = gcnew Grid();
g->Children->Add(l);
g->Children->Add(txt);ColorPickerControlNamespace::ColorPickerControl^ c = gcnew ColorPickerControlNamespace::ColorPickerControl();w->Content = g;
w->ShowDialog();
Byte bb = Convert::ToByte(txt->Text);
return bb;
}
Задача ещё не решена.