t4 템플릿을 만들고 템플릿 내에서 nhibernate를 초기화하려고합니다. t4 런타임 중에 오류가 발생합니다 :Nhibernate가 지정한 파일을 찾을 수 없습니다.
'Network.Framework.Entities'또는 그 종속성 중 하나를로드 할 수 없습니다. 시스템이 지정된 파일을 찾을 수 없습니다.
오류의 의미를 이해하지만이 파일을 t4 런타임에 제공하여 찾을 수있는 방법을 모르겠습니다. 이 파일을 어셈블리 및 가져 오기로 추가했습니다. dll 파일을 VS public assembly 디렉토리, t4 temp 디렉토리 및 템플릿과 같은 디렉토리에 놓았습니다. 아무것도 작동하지 않습니다.
과 융합 로그 :조립 관리자에서로드 : C : \ 실행 C에서 실행 WINNT \ Microsoft.NET 프레임 워크 \ \ v4.0.30319 \ clr.dll 가 : \ 프로그램 파일 \ 마이크로 소프트 비주얼 스튜디오 10.0 \ Common7 \ IDE \ devenv.exe
--- 자세한 오류 로그는 다음과 같습니다.
=== 사전 바인드 상태 정보 ===
LOG : 사용자 = 자신
LOG : 표시 이름 = Network.Framework.Entities (부분)
WRN : 부분 바인딩 정보 어셈블리에 대해 제공되었습니다.
WRN : 어셈블리 이름 : Network.Framework.Entities | 도메인 ID : 77
WRN : 어셈블리 표시 이름의 일부만 제공되면 부분 바인드가 발생합니다.
WRN : 바인더가 잘못 삽입 될 수 있습니다.
WRN : 그것은, 어셈블리에 대한 완전 지정된 텍스트 ID를 제공하는 것이 좋습니다
WRN : 단순한 이름, 버전, 문화, 공개 키 토큰으로 구성되어 있습니다.
WRN :이 문제에 대한 추가 정보 및 일반적인 해결책은 백서 http://go.microsoft.com/fwlink/?LinkId=109270을 참조하십시오.
LOG : Appbase = 파일 : /// C :/프로그램 파일/마이크로 소프트 비주얼 스튜디오 10.0/Common7/IDE/
LOG : 초기 PrivatePath = NULL
호출 조립 : NHibernate에, 버전 = 3.3 .0.4000, 문화 = 중립, PublicKeyToken = aa95f207798dfdb4.
===
LOG :이 바인딩은 LoadFrom로드 컨텍스트에서 시작됩니다. WRN : LoadFrom 컨텍스트에서 네이티브 이미지가 검색되지 않습니다. 네이티브 이미지는 Assembly.Load()와 같이 기본로드 컨텍스트에서만 탐색됩니다.
로그 : 응용 프로그램 구성 파일 사용 : C : \ program files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe.구성
LOG : 사용 호스트 구성 파일 :
LOG : C에서 컴퓨터 구성 파일을 사용하여 : \ WINNT \ Microsoft.NET \ v4.0.30319 \ 설정 \ machine.config에 프레임 워크 \.
LOG : 정책이 현재 참조에 적용되지 않습니다 (개인, 사용자 정의, 부분 또는 위치 기반 어셈블리 바인드).
LOG : 동일한 바인딩이 이전에 표시되었으며 hr = 0x80070002로 실패했습니다. 여기
내 템플릿입니다 :<#@ template language="C#v4.0" hostspecific="True" debug="True" #>
<#@ output extension=".cs" #>
<#@ assembly name="mscorlib.dll" #>
<#@ assembly name="System.Xml.dll" #>
<#@ assembly name="System.Configuration.dll" #>
<#@ assembly name="EnvDTE.dll" #>
<#@ assembly name="$(SolutionDir)SharedDLLs\NHibernate.dll" #>
<#@ assembly name="$(SolutionDir)SharedDLLs\nunit.core.dll" #>
<#@ assembly name="$(SolutionDir)SharedDLLs\nunit.framework.dll" #>
<#@ assembly name="$(SolutionDir)SharedDLLs\NHibernate.Mapping.Attributes.dll" #>
<#@ assembly name="$(SolutionDir)SharedDLLs\Iesi.Collections.dll" #>
<#@ assembly name="$(SolutionDir)Network.Framework.Entities.Data\bin\Debug\Network.Framework.Entities.Data.dll" #>
<#@ assembly name="$(SolutionDir)Network.Framework.Entities\bin\Debug\Network.Framework.Entities.dll" #>
<#@ import namespace="System.Diagnostics" #>
<#@ import namespace="System.Configuration" #>
<#@ import namespace="System.Reflection" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="Network.Framework.Entities.Data.BL" #>
<#@ import namespace="Network.Framework.Entities" #>
<#@ import namespace="NHibernate" #>
<#@ import namespace="NHibernate.Cfg" #>
<#@ import namespace="NHibernate.Mapping.Attributes" #>
<#@ import namespace="EnvDTE" #>
<#@ import namespace="Network.Framework.Entities.DAL" #>
<#@ import namespace="System.Xml" #>
<#
System.Diagnostics.Debugger.Launch();
string path = Host.ResolvePath(@"..\Network.Framework.Entities\NHibernate.MSSQL.Config.xml");
T4DataAccess<ReferenceValue> dal = CreateDataAccess<ReferenceValue>(path);
ReferenceValueBL bl = new ReferenceValueBL(dal);
#>
using System;
namespace Network.Framework.Entities
{
public class ReferenceValueKey
{
<#
List<ReferenceValue> refVals = bl.Select();
foreach(ReferenceValue rv in refVals)
{
Write("Public ");
Write(rv.ReferenceValueCode.GetType().Name);
Write(" ");
Write(rv.ReferenceValueCode);
Write(" = ");
Write(rv.ReferenceValueCode);
}
#>
}
}
<#+
public ISessionFactory GetDBSession(string nHibernateConfigPath)
{
NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration().Configure(nHibernateConfigPath);
var assembly = System.Reflection.Assembly.GetAssembly(typeof(Network.Framework.Entities.PlanCode));
var serializedAssembly = HbmSerializer.Default.Serialize(assembly);
cfg.AddInputStream(serializedAssembly);
return cfg.BuildSessionFactory();
}
public T4DataAccess<T> CreateDataAccess<T>(string nHibernateConfigPath) where T : class
{
ISessionFactory db = GetDBSession(nHibernateConfigPath);
return new T4DataAccess<T>(db);
}
#>