使用带参数的Visual Studio自定义模板时,如何获得实际的根命名空间?

时间:2011-09-21 14:45:58

标签: visual-studio templates

我正在尝试设置一个模板来创建一个单元测试类,其中包含一些基本结构和默认的using语句。我已经创建了一个VS2010自定义模板来执行此操作,几乎所有内容都能正常工作。

我遇到的问题是我试图在using语句中引用我的项目的基本命名空间,并且我无法确定是否有一个参数可以让我这样做。

我想要的一个例子,假设我的项目名为MyProduct.Test:

using NUnit.Framework;
using MyProduct.Test.Base;

namespace MyProduct.Test.BLL.Services.MyService
{
    [TestFixture]
    public class MyServiceTest : TestBase
    {
        [SetUp]
        public void Setup()
        etc...

我可以使用以下模板生成除using MyProduct.Test.Base以外的所有内容:

using NUnit.Framework;
using $safeprojectname$.Base;

namespace $rootnamespace$
{
    [TestFixture]
    public class $safeitemname$ : TestBase
    {
        [SetUp]
        public void Setup()
        etc...

不幸的是,$ safeprojectname $仅适用于Project模板,而不适用于Item模板。

此模板产生以下输出:

using NUnit.Framework;
using $safeprojectname$.Base;

namespace MyProduct.Test.BLL.Services.MyService
{
    [TestFixture]
    public class MyServiceTest : TestBase
    {
        [SetUp]
        public void Setup()
        etc...

有没有办法让我获得项目的实际根命名空间(因为$ rootnamespace $实际上输出了根据其位置添加的文件的命名空间)?

注意:显然我可以将其设置为适用于一个项目,但是拥有适用于所有项目的模板会更有用。

0 个答案:

没有答案