У меня есть проект C # в решении, которое я построил в VS2019 Enterprise, используя .NET 4.8, и, поскольку это инструмент только для внутреннего использования, 1) журнал сборки, который я опубликую, будет отредактирован, и 2)Я точно знаю аппаратную и .NET-версию каждого компьютера, на котором он будет запущен, потому что все они идентичны моему.
Сборка подписана с помощью аппаратного ключа, потому что мы используем белый список, чтобы определить, что можети не может работать на указанных ноутбуках, (поэтому я должен построить это локально), и я собираю только x64 из-за требований памяти к инструменту. (Да, я смотрел, как он работает, да, он использует более 2 ГБ ОЗУ, и нет, я ничего не могу с этим поделать. Вам просто придется поверить на это.)
ИтакПосле всего вышесказанного я установил расширение, сделанное Microsoft, чтобы попытаться создать установщик MSI, потому что его нужно установить как можно проще, и он не работает. Вывод ниже.
1>------ Rebuild All started: Project: MyCSProject, Configuration: Release x64 ------
1> MyCSProject -> C:\dev\Source\Repos\MySolution\MyCSProject\bin\x64\Release\MyCSProject.exe
1> Done Adding Additional Store
1> Successfully signed: C:\dev\Source\Repos\MySolution\MyCSProject\bin\x64\Release\MyCSProject.exe
1>
------ Starting pre-build validation for project 'MyCSProject Setup' ------
------ Starting pre-build validation for project 'MyCSProject Setup' ------
------ Starting pre-build validation for project 'MyCSProject Setup' ------
WARNING: Unable to find dependency 'MICROSOFT.WINDOWSAPICODEPACK' (Signature='(null)' Version='1.1.0.0') of assembly 'Microsoft.WindowsAPICodePack.Shell.dll'
WARNING: Unable to find dependency 'MICROSOFT.WINDOWSAPICODEPACK' (Signature='(null)' Version='1.1.0.0') of assembly 'Microsoft.WindowsAPICodePack.Shell.dll'
WARNING: Unable to find dependency 'MICROSOFT.WINDOWSAPICODEPACK' (Signature='(null)' Version='1.1.0.0') of assembly 'Microsoft.WindowsAPICodePack.Shell.dll'
------ Pre-build validation for project 'MyCSProject Setup' completed ------
------ Pre-build validation for project 'MyCSProject Setup' completed ------
------ Pre-build validation for project 'MyCSProject Setup' completed ------
2>------ Rebuild All started: Project: MyCSProject Setup, Configuration: Release ------
2>------ Rebuild All started: Project: MyCSProject Setup, Configuration: Release ------
2>------ Rebuild All started: Project: MyCSProject Setup, Configuration: Release ------
Building file 'C:\dev\Source\Repos\MySolution\MyCSProject Setup\Release\MyCSProject Setup.msi'...
Building file 'C:\dev\Source\Repos\MySolution\MyCSProject Setup\Release\MyCSProject Setup.msi'...
Building file 'C:\dev\Source\Repos\MySolution\MyCSProject Setup\Release\MyCSProject Setup.msi'...
WARNING: Xml validation did not pass for item 'Microsoft .NET Framework 4.8 (x86 and x64)' located at 'C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX48\product.xml'.
WARNING: Xml validation did not pass for item 'Microsoft .NET Framework 4.8 (x86 and x64)' located at 'C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX48\product.xml'.
WARNING: Xml validation did not pass for item 'Microsoft .NET Framework 4.8 (x86 and x64)' located at 'C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX48\product.xml'.
WARNING: Xml Validation error in file 'C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX48\product.xml': The element 'InstallConditions' in namespace 'http://schemas.microsoft.com/developer/2004/01/bootstrapper' cannot contain text. List of possible elements expected: 'http://schemas.microsoft.com/developer/2004/01/bootstrapper:BypassIf http://schemas.microsoft.com/developer/2004/01/bootstrapper:FailIf'.
WARNING: Xml Validation error in file 'C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX48\product.xml': The element 'InstallConditions' in namespace 'http://schemas.microsoft.com/developer/2004/01/bootstrapper' cannot contain text. List of possible elements expected: 'http://schemas.microsoft.com/developer/2004/01/bootstrapper:BypassIf http://schemas.microsoft.com/developer/2004/01/bootstrapper:FailIf'.
WARNING: Xml Validation error in file 'C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX48\product.xml': The element 'InstallConditions' in namespace 'http://schemas.microsoft.com/developer/2004/01/bootstrapper' cannot contain text. List of possible elements expected: 'http://schemas.microsoft.com/developer/2004/01/bootstrapper:BypassIf http://schemas.microsoft.com/developer/2004/01/bootstrapper:FailIf'.
WARNING: Two or more objects have the same target location ('[targetdir]\system.runtime.dll')
WARNING: Two or more objects have the same target location ('[targetdir]\system.runtime.dll')
WARNING: Two or more objects have the same target location ('[targetdir]\system.runtime.dll')
WARNING: Two or more objects have the same target location ('[targetdir]\system.runtime.dll')
WARNING: Two or more objects have the same target location ('[targetdir]\system.runtime.dll')
WARNING: Two or more objects have the same target location ('[targetdir]\system.runtime.dll')
WARNING: Two or more objects have the same target location ('[targetdir]\system.net.http.dll')
WARNING: Two or more objects have the same target location ('[targetdir]\system.net.http.dll')
WARNING: Two or more objects have the same target location ('[targetdir]\system.net.http.dll')
WARNING: Two or more objects have the same target location ('[targetdir]\system.net.http.dll')
WARNING: Two or more objects have the same target location ('[targetdir]\system.net.http.dll')
WARNING: Two or more objects have the same target location ('[targetdir]\system.net.http.dll')
ERROR: File 'MyCSProject.exe' of project output 'Primary output from MyCSProject (Active)' targeting 'AMD64' is not compatible with the project's target platform 'x86'
ERROR: File 'MyCSProject.exe' of project output 'Primary output from MyCSProject (Active)' targeting 'AMD64' is not compatible with the project's target platform 'x86'
ERROR: File 'MyCSProject.exe' of project output 'Primary output from MyCSProject (Active)' targeting 'AMD64' is not compatible with the project's target platform 'x86'
WARNING: File 'MyCSProject.exe' of project output 'Primary output from MyCSProject (Active)' targeting 'x64' is not compatible with the project's target platform 'x86'
WARNING: File 'MyCSProject.exe' of project output 'Primary output from MyCSProject (Active)' targeting 'x64' is not compatible with the project's target platform 'x86'
WARNING: File 'MyCSProject.exe' of project output 'Primary output from MyCSProject (Active)' targeting 'x64' is not compatible with the project's target platform 'x86'
Build process cancelled
========== Rebuild All: 1 succeeded, 1 failed, 0 skipped ==========
(Если есть язык, который я могу указать, который облегчит чтение журнала сборки, обязательно дайте мне знать. Я также могу опубликовать содержимое Product.xml
что в журнале упоминается, но, поскольку в нем содержится 97 строк, я не буду, если в этом нет необходимости.)
Примечание: я даже не использую ничего HTTP (это строго программа Windows Forms), поэтомуЯ понятия не имею, почему system.net.http.dll
вообще включен. Инструмент все еще находится в разработке, поэтому мне придется пересобрать несколько раз, прежде чем он будет сделан, без сомнения, но я просто пытаюсь получить эту вещь в формате, который я могу получить на своих ноутбуках, потому что мыразлетелся по всей стране.
Так почему же он не строит? Я обнаружил, что есть немного документации по этому вопросу, особенно что-либо недавнее. Что должно произойти , как показывают первые несколько строк, должен быть собран MSI, который устанавливает мой exe-файл и любые библиотеки DLL, которые нельзя свернуть в EXE.
(FWIW,Я также пытался использовать опцию «Опубликовать» в VS, но затем он жалуется на неправильно сформированный файл .manifyt, и он все еще не создает тот установщик «все готово», который я ищу.)
Обновление
Ответ Gonzix избавился от ошибок, но у меня все еще есть некоторые предупреждения. Это большое дело? Могу ли я безопасно развернуть как есть, или мне нужно сделать что-то еще?
WARNING: Unable to find dependency 'MICROSOFT.WINDOWSAPICODEPACK' (Signature='(null)' Version='1.1.0.0') of assembly 'Microsoft.WindowsAPICodePack.Shell.dll'
------ Pre-build validation for project 'MyCSProject Setup' completed ------
2>------ Rebuild All started: Project: MyCSProject Setup, Configuration: Release ------
Building file 'C:\dev\Source\Repos\MySolution\MyCSProject Setup\Release\MyCSProject Setup.msi'...
WARNING: Xml validation did not pass for item 'Microsoft .NET Framework 4.8 (x86 and x64)' located at 'C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX48\product.xml'.
WARNING: Xml Validation error in file 'C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX48\product.xml': The element 'InstallConditions' in namespace 'http://schemas.microsoft.com/developer/2004/01/bootstrapper' cannot contain text. List of possible elements expected: 'http://schemas.microsoft.com/developer/2004/01/bootstrapper:BypassIf http://schemas.microsoft.com/developer/2004/01/bootstrapper:FailIf'.
WARNING: Two or more objects have the same target location ('[targetdir]\system.net.http.dll')
WARNING: Two or more objects have the same target location ('[targetdir]\system.net.http.dll')
WARNING: Two or more objects have the same target location ('[targetdir]\system.runtime.dll')
WARNING: Two or more objects have the same target location ('[targetdir]\system.runtime.dll')
Моя главная проблема - это ситуация с дуэли-DLL, когда компьютер конечного пользователя каким-то образом запутывается, или что-то, вызывающее инструментчто делает белый список, чтобы кричать. Я знаю, что мой ноутбук настроен на то, чтобы этот инструмент меньше кричал, (VS никогда бы не запустился), поэтому я бы хотел, чтобы было ноль предупреждений, а не просто ноль ошибок ...
TL; DR предупреждения, что у меня все еще проблема или нет? При каких обстоятельствах они могут быть проблемой?