C# T4 使用来自 web.config 的 assemblybinding / bindingRedirect
C# T4 using assemblybinding / bindingRedirect from web.config
我在我的 Web 项目中创建了我自己的 T4 Tempalte,它从我当前的解决方案中加载使用过的程序集并创建了一些文件。
到目前为止一切正常。但现在我已将我的一个 NuGet 组件更新为新版本,并添加了一个 assemblyBinding 部分,以便我的组件的旧版本和新版本都能正常工作。到目前为止,这对我的网站本身也很有效。
但是我的 T4 模板现在带来了
The File or Assembly "\xxx...\...." or a dependency could not be found
我的 T4 模板似乎没有读取 web.config 中的 assemblyBinding 部分,这是可能的吗?是否有解决方法,无需更新每个相关 dll 中的程序集引用。
我正在使用带有已编译 Dll 的 T4 模板来实现代码,在我的 DLL 中我正在加载我的程序集,效果很好。
var assemblies = Factory.CreateAssemblyManager().LoadAssemblies(proxySettings.WebProjectName, proxySettings.FullPathToTheWebProject);
然后我在每个程序集中搜索我的自定义属性,在这里我得到上面的错误,无法加载文件或程序集。
foreach (Assembly assembly in assemblies)
{
var types = assembly.GetTypes().Where(type => type.GetMethods().Any(p => p.GetCustomAttributes(typeof (CreateProxyBaseAttribute), true).Any())).ToList();
}
德语错误:
{"Die Datei oder Assembly \"Internal.Xyz.DomainModel, Version=2.1.0.0, Culture=neutral, PublicKeyToken=d72343e09836ed19\" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden." :"Internal.Xyz.DomainModel, Version=2.1.0.0, Culture=neutral, PublicKeyToken=d72343e09836ed19"}
问题是,T4 模板没有在项目内部使用 web.config,T4 模板在 visual studio 的上下文中是 运行,并使用来自 visual Studio.
要解决此问题,请从 visual studio 编辑配置并在其中添加 dependentAssembly 绑定
对于 VS 2015 使用以下路径
c:\users\[user]\AppData\Local\Microsoft\VisualStudio.0\devenv.exe.config
在 VS 2017 中你需要使用这个路径
C:\Program Files (x86)\Microsoft Visual Studio17\Professional\Common7\IDE
您需要重启 visual studio
我在我的 Web 项目中创建了我自己的 T4 Tempalte,它从我当前的解决方案中加载使用过的程序集并创建了一些文件。
到目前为止一切正常。但现在我已将我的一个 NuGet 组件更新为新版本,并添加了一个 assemblyBinding 部分,以便我的组件的旧版本和新版本都能正常工作。到目前为止,这对我的网站本身也很有效。
但是我的 T4 模板现在带来了
The File or Assembly "\xxx...\...." or a dependency could not be found
我的 T4 模板似乎没有读取 web.config 中的 assemblyBinding 部分,这是可能的吗?是否有解决方法,无需更新每个相关 dll 中的程序集引用。
我正在使用带有已编译 Dll 的 T4 模板来实现代码,在我的 DLL 中我正在加载我的程序集,效果很好。
var assemblies = Factory.CreateAssemblyManager().LoadAssemblies(proxySettings.WebProjectName, proxySettings.FullPathToTheWebProject);
然后我在每个程序集中搜索我的自定义属性,在这里我得到上面的错误,无法加载文件或程序集。
foreach (Assembly assembly in assemblies)
{
var types = assembly.GetTypes().Where(type => type.GetMethods().Any(p => p.GetCustomAttributes(typeof (CreateProxyBaseAttribute), true).Any())).ToList();
}
德语错误:
{"Die Datei oder Assembly \"Internal.Xyz.DomainModel, Version=2.1.0.0, Culture=neutral, PublicKeyToken=d72343e09836ed19\" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden." :"Internal.Xyz.DomainModel, Version=2.1.0.0, Culture=neutral, PublicKeyToken=d72343e09836ed19"}
问题是,T4 模板没有在项目内部使用 web.config,T4 模板在 visual studio 的上下文中是 运行,并使用来自 visual Studio.
要解决此问题,请从 visual studio 编辑配置并在其中添加 dependentAssembly 绑定
对于 VS 2015 使用以下路径
c:\users\[user]\AppData\Local\Microsoft\VisualStudio.0\devenv.exe.config
在 VS 2017 中你需要使用这个路径
C:\Program Files (x86)\Microsoft Visual Studio17\Professional\Common7\IDE
您需要重启 visual studio