See the question and my original answer on StackOverflow

Sure you can do this. You're the only one who will be using this interface definition, so that's fine.

Of course, if this interface was used as a callback from native to managed, it would be a problem, but in this case you would be implementing it somehow. Implementing such dummy methods is a sign of future problems.

Note there's an official way of doing it. You can use a special _VtblGap{0}_{1} name for the placeholder, where 0 is an index, and 1 is the number of methods you want to skip.

See the implementation in Roslyn here (it's also in the Common Language Infrastructure specification):

        // From IMetaDataEmit::DefineMethod documentation (
        // ----------------------
        // In the case where one or more slots need to be skipped, such as to preserve parity with a COM interface layout, 
        // a dummy method is defined to take up the slot or slots in the v-table; set the dwMethodFlags to the mdRTSpecialName 
        // value of the CorMethodAttr enumeration and specify the name as:
        // _VtblGap<SequenceNumber><_CountOfSlots>
        // where SequenceNumber is the sequence number of the method and CountOfSlots is the number of slots to skip in the v-table. 
        // If CountOfSlots is omitted, 1 is assumed.
        // ----------------------
        // From "Partition II Metadata.doc"
        // ----------------------
        // For COM Interop, an additional class of method names are permitted:
        // _VtblGap<SequenceNumber><_CountOfSlots>
        // where <SequenceNumber> and <CountOfSlots> are decimal numbers
        // ----------------------

So in your case, it would be:

[InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("79C07CF1-CBDD-41ee-8EC3-F00080CADA7A")]
public interface IWiaDevMgr2_Fake
    void _VtblGap1_7(); // skip seven methods