2012-11-13 46 views
1

我在使用Visual Studio 2012中的T4工具时遇到了问题。我的.tt文件对构建于同一解决方案中的64位.DLL有程序集指令。这是调试TT文件的输出:Visual Studio 2012中的T4中的程序集引用.NET 4.5

错误308,同时试图解决 集引用“$(TARGETDIR)\ DCSGenerator.dll”主机抛出异常。转换 将不会运行。引发以下异常: System.IO.FileLoadException:给定的程序集名称或代码库为 无效。 (从HRESULT异常:0x80131047)在 System.Reflection.AssemblyName.nInit(RuntimeAssembly &组件, 布尔forIntrospection,布尔raiseResolveEvent)在 System.Reflection.AssemblyName..ctor(字符串的AssemblyName)在 Microsoft.VisualStudio.TextTemplating。 GlobalAssemblyCacheHelper.GetLocation(字符串 强名称)在 Microsoft.VisualStudio.TextTemplating.VSHost.TextTemplatingService.ResolveAssemblyReference(字符串 assemblyReference)在 Microsoft.VisualStudio.TextTemplating.Engine.ResolveAssemblyReferences(ITextTemplatingEngineHost 主机,TemplateProcessingSession 会话)C:\ TFS \ DEV01 \ CorePlatform \ CoreServices \ ImportExport.NET \ ImportExport.N ET \ DicomInterface \ TemplateUtilFunctions.tt 0 0 ImportExport.NET (CoreServices \ ImportExport.NET \ ImportExport.NET)

是其他任何人有问题?

此致

UPDATE二○一二年十一月一十四日9点17分(CET):Visual Studio和因此T4发生器运行作为一个32位应用和我的组件被构建为64位的DLL。这可能是问题的根源。

UPDATE 2012-11-14 09:43(CET):试图使用完整路径引用程序集,但这并未解决问题。

+1

VS作为32位运行,所以如果引用的dll没有标记为“任何CPU”,但需要64位拱,那么由VS托管的T4库无法加载dll(32位进程无法加载64位dll,反之亦然) – FuleSnabel

+0

我在互联网上搜索类似的探针后怀疑这一点。由于我认为有一些解决方案的限制,从未设法将目标平台切换到32/64位。然而,我会遵循这一领导。谢谢! – qstebom

+0

异常中的'$(TargetDir)\ DCSGenerator.dll'对我来说看起来很奇怪,因为异常通常显示派生路径,而不是源代码。尝试一个硬代码完整路径,只是为了看。 –

回答

0

正如我怀疑,通过构建与PlatformTarget AnyCPU依赖程序集解决了问题。现在生成的DLL是32位和64位程序集兼容的。

相关问题