Любой проект публикует sh в коде, но возникает ошибка. Как мне решить? - PullRequest
0 голосов
/ 15 апреля 2020

    public Foo()
    {
        PublishProject();
    }

    internal static void PublishProject()
    {
        var project = GetActiveProject();
        var sb2 = project.DTE.Solution.SolutionBuild as SolutionBuild2;
        sb2.PublishProject(project.ConfigurationManager.ActiveConfiguration.ConfigurationName, project.UniqueName, true);
    }

       internal static EnvDTE.Project GetActiveProject()
       {
           EnvDTE.DTE dte = Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(Microsoft.VisualStudio.Shell.Interop.SDTE)) as EnvDTE.DTE;
           EnvDTE.Project activeProject = null;
           string endWith = ((dte.Solution.SolutionBuild as EnvDTE80.SolutionBuild2).StartupProjects as System.Array).GetValue(0).ToString();
           foreach (EnvDTE.Project project in dte.Solution.Projects)
           {
               if (project.FullName != null && project.FullName.EndsWith(endWith))
               {
                   return project;
               }
           }
           return null;
       }

Вывод:

1> ------ Publi sh запущено: проект: WebApplication2, конфигурация: освободить любой процессор ------

1 > Ошибка: ссылка на объект не установлена ​​для экземпляра объекта.

========== Publi sh: 0 успешно выполнено, 0 не выполнено, 0 пропущено ======= ===

Примечание: я перевел его, используя перевод.

i publi sh проект веб-приложения (. net freamwork) в коде.

я смотрю на здесь

я использовал этот метод, но ошибка, которую он дает, не имеет никакого смысла.

Что-то упущено в вопросе?

Не могли бы вы помощь

1 Ответ

1 голос
/ 17 апреля 2020

Любой проект публикует sh в коде, но возникает ошибка. Как мне решить?

Из вашего описания, не только этот проект, но и другие проекты имеют проблему publi sh.

Если вы установите Microsoft.VisualStudio. Пакет SDK nuget, а затем ссылки на эти сборки:

using EnvDTE80;
using EnvDTE;
using Microsoft.VisualStudio.Shell;

Я не столкнусь с той же ошибкой publi sh на моей стороне с вашим кодом. Поэтому я думаю, что в вашей среде проекта или VS IDE есть некоторые ошибки.

Пожалуйста, попробуйте следующие предложения:

Предложение

1) удалить все кэши компонентов в C:\Users\xxx\AppData\Local\Microsoft\VisualStudio\15.0_xxx(15.0 is VS2019)\ComponentModelCache, а затем перезапустить VS

2) отключить все сторонние расширения в Tools -> Extensions and Updates.

3) удалить *.dll.refresh файл в выходной папке bin , если у вас есть.

4) закрыть VS Instance, удалить .vs скрытая папка, bin, obj папка, а затем перезапустите проект.

5) Пожалуйста, проверьте, есть ли у вас антивирус McAfee, и если да, отключите его.

6) Если ваш VS2017 не последняя версия, пожалуйста, обновите его, если какие-то исправления или исправят .

Надеюсь, это поможет вы.

...