Сборка установщика для проекта C # в VS2019 .NET 4.8 завершается неудачно - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть проект 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 предупреждения, что у меня все еще проблема или нет? При каких обстоятельствах они могут быть проблемой?

1 Ответ

0 голосов
/ 04 ноября 2019

Если под расширением «Microsoft-made» вы подразумеваете расширение установщика Microsoft Visual Studio, вам нужно щелкнуть по проекту установки и найти свойства проекта. Существует свойство под названием «TargetPlaform», которое по умолчанию указывает на x86. Не знаю, так ли это, но это решило проблему для меня.

Property pane

...