我有一个Visual Studio模板向导,最终我需要有条件地(基于用户选择)更改.NET目标:
// project的类型为EnvDTE.Project
project.Properties.Item(" TargetFrameworkMoniker")。Value = " .NETFramework,版本= 4.5版"
问题是,在此之后,对项目属性的所有引用都会返回" Project Unavailable"。
更改.NET目标后,我需要添加一些程序集作为引用,如果项目不可用,则不再有效。
反转任务顺序(首先添加引用然后更改目标)不起作用,因为我添加了一些需要.NET 4.5的依赖项(而项目最初是.NET 4.0)。
答案 0 :(得分:2)
好的,这就是我解决的问题
project.Properties.Item(" TargetFrameworkMoniker")。Value = " .NETFramework,版本= 4.5版&#34 ;;
project =(Project)((Array)(Dte.ActiveSolutionProjects))。GetValue(0);
第二行使用以前初始化的Dte实例获取项目的新副本(这个新项目实例镜像了前一个实例的所有更改(甚至那些未保存的),因此已经有了目标框架== 4.5 !! )。
新实例可用于添加项目引用等。