17

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

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

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

4

3 回答 3

19

您应该在 vstemplate 中将CreateInPlace属性设置为。文件true_

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

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

于 2012-01-05T12:28:40.327 回答
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)。

于 2011-06-23T10:00:38.453 回答
1

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

于 2011-05-25T20:32:05.710 回答