如何创建包含链接文件的Visual Studio项目模板?

时间:2011-05-25 17:35:34

标签: visual-studio hyperlink project-template

在Visual Studio 2010中,我想创建一个项目模板,其中包含系统中应存在的指向两个文件的链接。其中一个是常见的AssemblyInfo.cs文件。另一个是强名称密钥文件(* .snk)。

我需要这些引用是 relative ,因为每个开发人员的工作区将以不同方式设置。项目模板是否有可能以某种方式确定这些文件在每个开发人员环境中的位置?

从阅读有关模板的内容来看,它听起来像是非常静态的,所以我想知道是否可以通过这些技巧来做这样的事情。如果没有别的,我可以添加导致编译错误的虚假引用,并强制开发人员将这些文件挂钩。但如果我能为他们做这件事,那就更好了。

3 个答案:

答案 0 :(得分:18)

您应该在vstemplate中将 CreateInPlace 属性设置为truedocumentation

  

指定是在目标位置创建项目并执行参数替换,还是在临时位置执行参数替换,然后将项目保存到指定位置。

如果您希望相对路径起作用,则需要在创建项目的地方进行参数替换,不在临时位置

答案 1 :(得分:2)

Microsoft已经确认这是可扩展性模型和项目模板的错误。我设法通过使用IWizard来解决这个问题。我在IWizard实现的RunFinished方法中添加了以下代码:

    //Get linked file directory
    string coreDir = Path.GetDirectoryName(MyProject.FullName);

    //Data folder
    ProjectItem propertiesProjectItem = slSharedProject.ProjectItems.Cast<ProjectItem>().Where(p => p.Name == "Data").First();
    propertiesProjectItem.ProjectItems.AddFromFile(coreDir + @"\Service\TheFileIWantToLink.cs");

此代码将TheFileIWantToLink.cs文件的副本链接到我的共享Silverlight项目(slSharedProject)。

答案 2 :(得分:1)

您可以尝试将向导集成到项目模板中,并将路径设置为链接文件。如果我没记错,你不必创建用户界面;您只需在 replacementsDictionary 中指定正确的替换项,VS将替换模板文件中的值。有关详细信息,请参阅thisthis