Nhibernate找不到指定的文件

Nhibernate找不到指定的文件,nhibernate,t4,Nhibernate,T4,我正在创建一个t4模板,并尝试在模板中初始化nhibernate。在t4运行时,我收到一个错误: 无法加载文件或程序集“Network.Framework.Entities”或其依赖项之一。系统找不到指定的文件 我理解错误的含义,但我不知道如何将此文件提供给t4运行时,以便它可以找到它。我已将此文件添加为程序集和导入。我已将dll文件放在VS public Assemblys目录、t4 temp目录以及与模板相同的目录中。什么都不管用 以及融合日志: 从以下位置加载的程序集管理器:C:\WINN

我正在创建一个t4模板,并尝试在模板中初始化nhibernate。在t4运行时,我收到一个错误:

无法加载文件或程序集“Network.Framework.Entities”或其依赖项之一。系统找不到指定的文件

我理解错误的含义,但我不知道如何将此文件提供给t4运行时,以便它可以找到它。我已将此文件添加为程序集和导入。我已将dll文件放在VS public Assemblys目录、t4 temp目录以及与模板相同的目录中。什么都不管用

以及融合日志:

从以下位置加载的程序集管理器:C:\WINNT\Microsoft.NET\Framework\v4.0.30319\clr.dll 在可执行文件C:\program files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe下运行

---下面是详细的错误日志

==预绑定状态信息===

日志:用户=我自己

日志:DisplayName=Network.Framework.Entities (部分)

警告:为程序集提供了部分绑定信息:

警告:程序集名称:Network.Framework.Entities |域ID:77

警告:仅提供部分程序集显示名称时,会发生部分绑定

警告:这可能会导致活页夹加载不正确的组件

警告:建议为程序集提供完全指定的文本标识

警告:它由简单的名称、版本、区域性和公钥令牌组成

警告:有关此问题的更多信息和常见解决方案,请参阅白皮书

日志:Appbase=file:///C:/program 文件/Microsoft Visual Studio 10.0/Common7/IDE/

日志:初始PrivatePath=NULL

调用程序集:NHibernate,版本=3.3.0.4000,区域性=neutral,PublicKeyToken=aa95f207798dfdb4

===

日志:此绑定在LoadFrom加载上下文中启动。 警告:将不会在LoadFrom上下文中探测本机映像。本机映像将仅在默认加载上下文中进行探测,如Assembly.load()

日志:使用应用程序配置文件:C:\program files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.Config

日志:使用主机配置文件:

日志:使用C:\WINNT\Microsoft.NET\Framework\v4.0.30319\config\machine.config中的计算机配置文件

日志:此时未将策略应用于引用(私有、自定义、部分或基于位置的程序集绑定)

日志:以前看到过相同的绑定,但由于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);
    }
#>

使用制度;
名称空间Network.Framework.Entities
{
公共类引用ValueKey
{
}
}

将此添加到app.config

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="NHibernate" culture="neutral" publicKeyToken="aa95f207798dfdb4" />
        <bindingRedirect newVersion="3.3.1.4000" oldVersion="0.0.0.0-3.3.0.4000" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>