Я использую VS2010 SP1 и все еще блокировался во время сборки после первой сборки при запуске пользовательского шаблона T4 во время событий POST-BUILD, которые обращались к экземплярам классов того же проекта.
Как я получил егоработа заключалась в том, чтобы использовать Reflection для доступа к классам из dll проекта.
У меня все еще возникала проблема с блокировкой при загрузке dll прямо из файла.должен был загрузить .dll в память как байтовый массив, а затем загрузить сборку из необработанного байтового массива.НЕ загружайте из файла с помощью Assembly.LoadFrom
Этот код взят из моего файла шаблона T4 и обращается к статическому классу «Информация» и вызывает статический метод «Версия» для возврата строкового значения.
string assemblyPath = Path.Combine(projectPath, @"bin\SampleProject.dll");
byte[] data;
using (var fs = File.OpenRead(assemblyPath))
{
data = new byte[fs.Length];
fs.Read(data, 0, Convert.ToInt32(fs.Length));
}
if (data == null || data.Length == 0)
{
throw new ApplicationException("Failed to load " + assemblyPath);
}
var asm = Assembly.Load(data);
appVersion = (string) asm.GetType("SampleProject.Information").GetField("Version").GetValue(null);