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跳过===========
注意:我使用笔译进行了翻译。
我用代码发布Web应用程序项目(.net框架)。
我看here
我使用了这种方法,但是它给出的错误没有任何意义。
问题中是否缺少任何内容?
您能帮忙
任何项目都在代码中发布,但是会发生错误。我该如何解决?
根据您的描述,不仅这个项目而且其他项目都有发布问题。
如果安装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实例,删除.vs
隐藏文件夹,bin
,obj
文件夹,然后重新启动项目。
[5)请检查您是否装有McAfee防病毒软件,如果有,请关闭它。
[6)如果您的VS2017不是最新版本,请进行更新以防某些修复或do a repair。
希望它可以帮助您。