gpt4 book ai didi

c# - 可以将 EnvDTE.Project 转换为 VCProject

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:17 26 4
gpt4 key购买 nike

到目前为止,我已经看到两个帖子与我的问题有关。我想知道如何将 EnvDTE.Project 转换为 VCProject。

this post , 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) 

才意识到这个 Actor

VCProject vcProject = project.Object as VCProject;

返回空值。

谁能告诉我这是为什么?我看过this post hveiras 建议

There is a VCCodeModel.dll for each VS version.

如果 VCProjectEngine.dll 也是这种情况,我该如何解决我的问题?

我已经更改了对 VCProjectEngine.dll 的引用,以便它使用 Visual Studio 2012(我正在使用的)的引用,但 vcProject 仍然为空。

最佳答案

VCProject 用于 C++ 项目,为了使用与 C#/VB 项目类似的界面,您必须使用 VSProject .

有许多 VSLangProj 重载/扩展,您必须找到特定于您需要使用的版本的那个。请参阅:https://msdn.microsoft.com/en-us/library/1xt0ezx9.aspx对于从 2 到 100 的所有 VSLangProj 接口(interface)(我认为那是版本 2 到版本 10)。

关于c# - 可以将 EnvDTE.Project 转换为 VCProject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29951353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com