我创建了一个自定义VS模板,它使用IWizard类在用户创建项目以设置项目属性和路径时执行一些自动操作,我设法设置一些项目属性,如构建路径,方法是在RunStarted方法期间,使用$ signs内的参数保存.csproj文件,并在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中,将automationObject转换为DTE并调用它的ItemOperations.AddExistingItem方法。使用任一路径都会导致错误(参数不正确)。
在ProjectFinishedGenerating中,保存项目的路径,然后在RunFinished中,用该路径创建一个Microsoft.Build.BuildEngine.Project对象,调用DTE命令保存所有文件并卸载项目,然后调用项目对象的AddNewItem方法和SetMetaData对得到的项目项,后来我保存项目,并与DTE对象重新加载它,这又导致同样的错误作为前
我想感谢所有帮助与主题,我敢很难过。先谢谢你。
我还是设法找到一种解决方法,请参阅我的方法的答案,看看它是否适合你... – JohnoBoy 2010-09-19 06:29:34
感谢您的解决方法,行之有效。唯一的问题似乎是运行后,我得到一个对话框,说“项目不可用”。我只需要点击“确定”,一切都很好(该项目是可用的,并按预期工作)。你知道如何防止这个错误出现吗?它发生在你身上吗? – user450354 2010-09-20 08:59:14
我忘了添加下面的命令:'dte.ExecuteCommand(“Project.ReloadProject”);',我认为这会解决你的问题 – JohnoBoy 2010-09-21 09:36:44