Error en la llamada a PipelineObjects con excepción

En este artículo se proporciona una solución para el error al realizar una llamada desde PipelineObjects la aplicación.

Versión del producto original:   BizTalk Server 2013, 2010
Número KB original:   2888774

Síntomas

Cuando realiza una llamada al ensamblado desde su propia aplicación, puede producirse un PipelineObjects error como el siguiente:

System.Reflection.TargetInvocationException no se ha controlada
HResult=-2146232828
Message=Exception ha sido lanzado por el destino de una invocación.
Source=mscorlib
StackTrace:
en System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached,
RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
en System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
en System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
en System.Activator.CreateInstance(Type type, Boolean nonPublic)
en System.Activator.CreateInstance(Type type)
en Microsoft.Test.BizTalk.PipelineObjects.PipelineFactory.CreatePipelineFromType(Type pipelineType)
en MyTestApp.Program.Main(String[] args) en C:\MyTestApp\Program.cs:line 9
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
en System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
en Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
en System.Threading.ThreadHelper.ThreadStart_Context(Estado de objeto)
en System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
en System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
en System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
en System.Threading.ThreadHelper.ThreadStart()
InnerException: System.InvalidCastException
HResult=-2147467262
Message=Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.BizTalk.Component.Interop.IComponentTypeInfo'. Se produjo un error en esta operación porque la llamada QueryInterface al componente COM de la interfaz con IID '{custom IID}' no se pudo realizar debido al siguiente error: no se admite dicha interfaz (excepción de HRESULT: 0x80004002 (E_NOINTERFACE)).
Source=Microsoft.BizTalk.Pipeline
StackTrace:
en Microsoft.BizTalk.PipelineOM.Pipeline.AddComponent(Stage stage, IBaseComponent realComponent)
en MyPipeline.MySendPipeline. ctor()

Causa

PipelineObjects.dllrequiere que la .NET Framework de activación en tiempo de ejecución de Microsoft la utilice la aplicación que la llama.

Solución

Modifique el app.config para que la llamada ejecutable PipelineObjects incluya el siguiente <startup> elemento:

<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" />
    </startup>
</configuration>

Más información

PipelineObjects.dll es una herramienta que se proporciona con el Kit de desarrollo de software (SDK) de BizTalk y se encuentra en la SDK\Utilities\PipelineTools carpeta.

Para obtener más información acerca <startup> del elemento, vea <startup> element.