【发布时间】:2010-09-07 13:12:45
【问题描述】:
我创建了一个自定义 VS 模板,当用户创建项目以设置项目属性和路径时,它使用 IWizard 类执行一些自动操作,我通过保存 . csproj 文件,在 $ 符号中包含参数,并在 RunStarted 方法期间在 replacementDictionary 中设置这些参数。
不幸的是,我无法使用相同的方法将项目作为链接添加到 .csproj。我有一个 .cs 文件,我需要将其添加为现有的和作为创建的每个项目的链接项,它的路径将由用户选择保存项目的位置确定。我已经到了我知道 .cs 文件路径的部分,(绝对和相对于项目的路径)。
这是我迄今为止尝试过的:
- 保存 .csproj 文件,其中包含项目的部分,路径占位符:
<Compile Include="$path_to_cs_file\cs_file_name.cs$"><Link>$cs_file_name.cs$</Link></Compile>
我尝试过使用绝对路径和相对路径来执行此操作,但由于某种原因,这使得 VS 将路径替换为 Documents and Settings\user\Local Settings 下完全不同的相对路径。
在 RunStarted 中,将自动化对象转换为 DTE 并调用它的 ItemOperations.AddExistingItem 方法。使用任一路径都会导致错误(参数不正确)。
在 ProjectFinishedGenerating 中,保存项目的路径,然后在 RunFinished 中,使用该路径创建 Microsoft.Build.BuildEngine.Project 对象,调用 DTE 命令保存所有文件并卸载项目,然后调用项目对象的 AddNewItem生成的 ProjectItem 上的方法和 SetMetaData,然后我保存项目并使用 DTE 对象重新加载它,这再次导致与以前相同的错误
感谢您对这个主题的任何帮助,我很难过。提前谢谢你。
【问题讨论】:
标签: visual-studio