Я создаю приложение для Windows, в котором я могу вызвать кодированный проект пользовательского интерфейса (проект с именем RecordAndPlayback) , нажав кнопку.Моя цель состоит в том, чтобы вызвать методы тестирования в кодированном проекте пользовательского интерфейса, а затем иметь возможность изменить тест, а затем перезвонить его из моего приложения win, не закрывая его с помощью той же кнопки.
Мне удалось вызвать метод теста, но у меня есть проблема в изменении метода теста после этого.Всякий раз, когда я строю свой кодированный проект пользовательского интерфейса, я получаю ошибку
ОШИБКА CSC (0,0): непредвиденная ошибка при создании файла отладочной информации '... \ obj \ Debug \ RecordAndPlayback.PDB' -'... \ obj \ Debug \ RecordAndPlayback.pdb: процесс не может получить доступ к файлу, потому что он используется другим процессом.
Я использовал AppDomain
, чтобы загрузить в него dll, а затемвыгрузите AppDomain
в надежде, что dll будет выпущена.Мне удалось это сделать, но затем я получил вышеупомянутую ошибку в файле .pdb.Я нашел другое решение, которое я нашел намного более простым, но все же получил вышеуказанную проблему.
Вот мой пример кода:
string dllPath = @"...\bin\Debug\RecordAndPlayback.dll";
byte[] fileContent;
using (FileStream dll = File.OpenRead(dllPath))
{
fileContent = new byte[dll.Length];
dll.Read(fileContent, 0, (int)dll.Length);
}
var DLL = Assembly.Load(fileContent);
Playback.Initialize();
foreach (Type type in DLL.GetExportedTypes())
{
if (type.Name == "CodedUITest1")
{
var c = Activator.CreateInstance(type);
try
{
type.InvokeMember("CodedUITestMethod1", BindingFlags.InvokeMethod, null, c, new object[] { });
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
break;
}
}
Playback.Cleanup();
Я пытался использовать AppDomain
, но это не помоглот работа.На самом деле приведенный выше код является лучшим, что я получил до сих пор, я уверен, что файл .dll выпущен, так как я могу удалить его.Также выпущен файл .pdb в папке bin (также удалось его удалить).Моя проблема - файл .pdb в папке obj.Единственный способ заключается в том, что я должен закрыть свой проект приложения Windows, чтобы я мог построить свой кодированный проект пользовательского интерфейса.
Как это исправить, не закрывая мое приложение win?