2011-05-25 36 views
17

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

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

从阅读有关模板,它听起来像他们非常静态,所以我不知道是否可以做到这样做的技巧。如果没有别的,我可以添加虚假引用,这会导致编译错误并迫使开发人员将这些文件挂钩。但如果我可以为他们做,那会更好。

+0

您是否曾经找到过解决方案? – 2011-06-22 08:32:42

回答

1

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

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)。

17

您应该在vstemplate中将CreateInPlace属性设置为true。该documentation

指定是否创建该项目,并在指定的位置进行参数替换,或者在一个临时位置进行参数替换,然后将项目保存到指定的位置。

如果你想相对路径的工作,你所需要的参数更换的地方出现在那里你在一个临时位置创建项目,没有。

+1

找到我需要的东西,欢呼。只是关于MSDN文档的简短说明,它指出默认值为true,但对于VS 2012项目模板而言似乎实际上是错误的。 – 2013-08-20 16:13:53

+0

对于VC++项目模板,CreateInPlace已被破坏。确认为错误:http://connect.microsoft.com/VisualStudio/feedback/details/789683/problem-with-createinplace-tag-in-project-template – makhdumi 2014-05-02 17:52:49

相关问题