[英]Can one cast an EnvDTE.Project into a VCProject
到目前為止,我已經看到兩篇有關我的問題的文章。 我想知道如何將EnvDTE.Project轉換為VCProject。
在這篇文章中 , fun4jimmy的答案正是在以下代碼行中(從他的答案中得出):
VCProject vcProject = project.Object as VCProject;
我已經嘗試在解決方案中做同樣的事情:
using EnvDTE;
using Microsoft.VisualStudio.VCProjectEngine;
[...]
private List<string> BuildAssembliesAndReturnTheirName(EnvDTE80.DTE2 dte)
{
Solution sln = dte.Solution;
bool isDirty = false;
foreach (Project project in sln.Projects)
{
VCProject vcProject = project.Object as VCProject;
Configuration activeConfiguration = project.ConfigurationManager.ActiveConfiguration;
foreach (VCConfiguration vcConfiguration in vcProject.Configurations)
{
//business logic
}
}
[...]
在VS中打開了一個解決方案。 該解決方案包含一些C#項目。 一切似乎都是為了讓此代碼執行直到我到達為止
foreach (VCConfiguration vcConfiguration in vcProject.Configurations)
才意識到這個演員
VCProject vcProject = project.Object as VCProject;
返回null。
誰能告訴我為什么呢? 我看過這篇文章 ,其中hveiras建議
每個VS版本都有一個VCCodeModel.dll。
如果VCProjectEngine.dll也是如此,該如何解決我的問題?
我已更改了對VCProjectEngine.dll的引用,因此它使用的是Visual Studio 2012(我正在使用的工具),但vcProject
仍然為null。
您不能轉換Project
對象本身,因為沒有繼承關系。
但是您可以使用內部對象:
VCProject vcProject = project.Object as VCProject;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.