Steve and
I wound up working on the same problem at the same time (probably for the same person…)

When working with the MSMQ adapter, keep in mind that you must reference the Microsoft.BizTalk.Adapter.MSMQ.MsmqAdapterProperties.dll
to have access to MSMQ-specific properties.  (The list of properties available
is in the adapter
documentation
.)

Why? The intellisense in the expression shape (when using the parentheses syntax on
messages, ports, etc.) is looking for classes derived from Microsoft.XLANGs.BaseTypes.PropertyBase
to present in the drop down list.  Some of those classes are part of your “native”
BizTalk installation, some are provided by add-on adapters, and (of course) some are
provided by property schemas that you develop.  A reference to the containing
assembly is necessary to find them.

Other things to note relative to the MSMQ adapter:

  • For dynamic send ports, the syntax can look like: SomePort(Microsoft.XLANGs.BaseTypes.Address)
    = @”MSMQ://FORMATNAME:DIRECT=OS:SOMEMACHINE\PRIVATE$\SOMEQ”;
  • In the case of dynamic send ports, the runtime will use non-transactional sends by
    default.  If you want transactional sends, you will need to set the transactional
    property: outboundMsg(MSMQ.Transactional) = true;
  • Transactional messages which fail to deliver to the remote queue will be found in
    the local Transactional Dead Letter queue.  No error will be raised by the adapter. 
    This may mean that your design requires acknowledgement messages to achieve what you
    are looking for.