首页 > 解决方案 > 任何项目在代码中发布但发生错误。我该如何解决?

问题描述


    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>----- 发布开始:项目:WebApplication2,配置:释放任何CPU ------

1>错误:对象引用未设置为对象的实例。

========== 发布:0 成功,0 失败,0 跳过 ==========

注意:我使用 translate 翻译了它。

我在代码中发布网络应用程序项目(.net framwork)。

我看这里

我使用了这种方法,但它给出的错误没有任何意义。

问题中有什么遗漏吗?

你能帮忙吗

标签: c#visual-studio-extensions

解决方案


任何项目在代码中发布但发生错误。我该如何解决?

根据您的描述,不仅这个项目,其他项目也有发布问题。

如果您安装Microsoft.VisualStudio.SDK nuget 包,然后引用这些程序集:

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

对于您的代码,我不会遇到同样的发布错误。所以我认为您的项目环境或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)如果有,请删除bin*.dll.refresh输出文件夹中的文件。

4)关闭VS Instance,删除.vs隐藏文件夹,,bin文件obj夹,然后重新启动你的项目。

5)请检查您是否安装了 McAfee 防病毒软件,如果有,请将其关闭。

6)如果您的VS2017不是最新版本,请更新它以防某些修复或修复

希望它可以帮助你。


推荐阅读