in Backend/Core/ForTea.Core/Psi/Modules/T4FilePsiModule.cs [64:108]
public T4FilePsiModule(
Lifetime lifetime,
[NotNull] IProjectFile projectFile,
[NotNull] ChangeManager changeManager,
[NotNull] IShellLocks shellLocks,
[NotNull] IT4Environment t4Environment,
[CanBeNull] TargetFrameworkId primaryTargetFrameworkId
)
{
Lifetime = lifetime;
lifetime.AddDispose(this);
ProjectFile = projectFile;
Solution = ProjectFile.GetSolution();
PsiModules = Solution.GetComponent<IPsiModules>();
PsiServices = Solution.GetComponent<IPsiServices>();
ChangeManager = changeManager;
ShellLocks = shellLocks;
ChangeProvider = new T4WriteOnlyChangeProvider();
changeManager.ExecuteAfterChange(() =>
{
changeManager.RegisterChangeProvider(lifetime, ChangeProvider);
changeManager.AddDependency(lifetime, PsiModules, source: ChangeProvider);
});
TargetFrameworkId = t4Environment.SelectTargetFrameworkId(primaryTargetFrameworkId, projectFile);
Project = ProjectFile.GetProject().NotNull();
var resolveContext = Project.IsMiscFilesProject()
? UniversalModuleReferenceContext.Instance
: this.GetResolveContextEx(ProjectFile);
Assertion.Assert(resolveContext.TargetFramework == TargetFrameworkId, "Failed to select TargetFrameworkId");
var documentManager = Solution.GetComponent<DocumentManager>();
SourceFile = CreateSourceFile(ProjectFile, documentManager, resolveContext);
AssemblyReferenceManager = new T4AssemblyReferenceManager(
Solution.GetComponent<IAssemblyFactory>(),
SourceFile,
ProjectFile,
resolveContext,
shellLocks
);
Solution.GetComponent<T4DeclaredAssembliesManager>().FileDataChanged.Advise(lifetime, OnFileDataChanged);
PersistentId = BuildPersistentId(primaryTargetFrameworkId);
OriginalTargetFrameworkId = primaryTargetFrameworkId;
}