Итак, у меня есть шаблон f T4, хранящийся в папке ProjectRoot / Data, и каждый раз, когда я перестраиваю свой проект, этот шаблон также перестраивается, и поэтому VS автоматически устанавливает пространство имен для сгенерированного класса в ProjectName.Data, но все остальные мои классы хранятся в пространстве имен ProjectName, поэтому это создает проблему, потому что я не хочу изменять это пространство имен каждый раз, когда я перестраиваю проект или шаблон, особенно если я поделюсь этим проектом с другими, поэтому есть ли какие-либо функции для установки пространства имен для сгенерированный код внутри самого кода T4?
EDIT
Вот минимальный репродуктивный пример этой проблемы:
File Output.tt, расположенный в ProjectRoot / Data
<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="GLGenerator" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Linq" #>
// Some other code
<#+
// Public constructor & class properties here
#>
И тогда автоматически сгенерированный класс на основе этого .tt файла выглядит так:
namespace <ProjectRoot>.Data
{
using GLGenerator;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using System;
public partial class OutputEnums : OutputEnumsBase
{
public virtual string TransformText()
{
// Auto-generated template code
}
// Class properties & constructor
}
// Other auto-generated code.
}
И, как видите, VS автоматически устанавливает пространство имен для этого класса в ProjectName.Data, что плохо для меня, поскольку я хочу, чтобы все мои классы были в одном пространстве имен, чтобы сделать большинство из них int ernal для этого пространства имен. Итак, есть ли способ изменить это поведение VS на что-то другое?