У меня есть C # winforms проект установки под Visual Studio 2015. У меня также есть 3 разных проекта службы Windows под тем же решением.Я использовал Omu.ValueInjecter для автоматического сопоставления аргумента с классом.
Я добавил проект установщика, который в основном использует Click Once со всеми добавляемыми в него зависимостями.
Я также использовалШаблон MVP для установки UI в этом проекте.И отдельный класс для работы с установкой тишины.См. Пример кода ниже
Ранее, когда я запускал установщик без вывода сообщений, я получил ошибку, связанную с dll NLog, поэтому я решил эту проблему с помощью nuget packager и включил эту dll в project => properties => Application Files ... Но сейчаспосле исправления библиотеки NLog я получаю Ошибка «Файл не найден» для Omu.ValueInjecter dll (ошибка типа «файл не найден»).
Я выполнил те же действия, что и для NLog, но не повезло.
Ниже приведен код в файле program.cs
[STAThread]
public static void Main(string[] args)
{
if(args == null || args.Length <=0){
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Installer(args) { IsSilentInstall = false });
}
else
new SilentInstaller(args) { IsSilentInstall = true; };
}
Код файла SilentInstaller.cs, как показано ниже
public class SilentInstaller
{
public SilentInstaller(string[] args)
{
var run = OnOpen;
if (run != null) run(args);
//run?.Invoke(args);
var install = OnInstall;
install?.Invoke();
var close = OnClose;
close?.Invoke();
}
public event Action<string[]> OnOpen;
public event Action OnInstall;
public event Action OnClose;
}
Ошибка "Файл не найден" выдается в строке при выполнении (run! = Null)(арг);в приведенном выше примере.run имеет тип события Action OnOpen;
Тот же фрагмент кода работает хорошо, если я запускаю установщик на основе пользовательского интерфейса, но получаю ошибку при запуске установщика без вывода сообщений.