我正在开发PowerShell脚本,以动态创建Visual Studio项目并将其文件夹和资产添加到解决方案中 . 我正在使用Visual Studio DTE .
我在文件系统上的目录结构如下:
C:\Dir1\Dir2\Stuff
|
+--Stuff <-- folder
| |
| `Stuff.csproj <-- existing project, included in sln
|
+--Subfolder <-- Subfolder in which I want to include my new csproj
| +--Project1 <-- folder
| | |
| | `Project1.csproj <-- existing project, included in sln
| |
| +--Project2 <-- folder
| | |
| | `Project2.csproj <-- existing project, included in sln
| |
| `--Project3 <-- this, subs below and csproj are created from my script
| |
| `Project3.csproj
|
`Stuff.sln
我的脚本正确创建了Subfolder \ Project3 \ Project3.csproj,我可以使用DTE将其添加到解决方案中而没有任何问题 .
但是,我希望在 solution folder 'Subfolder' 中添加Project3,所以它看起来像这样(虚拟图像,红色箭头显示我想要Project3的位置):
如何使用Powershell(以及可选的EnvDTE)实现此目的?任何示例代码将不胜感激 . 谢谢!
2 回答
SolutionFolder接口具有“从文件添加”方法:
http://msdn.microsoft.com/en-us/library/envdte80.solutionfolder.addfromfile
所以你只需要获得解决方案文件夹的句柄 . 我不知道您是通过DTE添加解决方案文件夹还是已经存在 .
如果您使用Solution2.AddSolutionFolder添加它
http://msdn.microsoft.com/en-us/library/envdte80.solution2.addsolutionfolder%28v=vs.110%29.aspx
它返回对solution文件夹的引用,您只需调用上面的方法即可 . 如果它已经存在,我认为你将不得不使用Solution2.FindProjectItem .
http://msdn.microsoft.com/en-us/library/2zszfd26%28v=vs.110%29.aspx
像下面这样的东西应该工作 . 我没有办法在那一刻尝试一下,所以可能需要调整 .
首先使用所需的相对路径创建“解决方案文件夹” . 请注意,Visual Studio 2012不会创建具有相同相对路径的系统文件夹 .
现在在“解决方案文件夹”中添加一个新项目,但在定义它时,必须小心系统中的相对路径与新“解决方案文件夹”的相对路径相匹配 . 如果您想要的文件夹不存在,VS 2012现在将为新项目创建它 .
如果要添加具有匹配相对路径的现有文件,则必须首先在VS外部的匹配系统相对路径中创建文件 . 然后,您可以在Visual Studio中“添加现有文件” .