Turns out that there were two differences between the A and C project files:
In C, the item group for the FluorineFx referenced library had an extra piece of XML in it
<Embed>true</Embed>
In C, a BeforeBuild task was added to the project:
<Target Name="BeforeBuild"> <CreateItem Include="@(ProjectReference->'%(RootDir)%(Directory)bin\$(Configuration)*.dll')" Condition="%(ProjectReference.Embed)=='True'"> <Output TaskParameter="Include" ItemName="ProjectReferencesToInclude" /> </CreateItem> <Message Text="ProjectReferencesToInclude contains @(ProjectReferencesToInclude)" Importance="High" /> <ItemGroup> <EmbeddedResource Include="@(ProjectReferencesToInclude)"> <LogicalName>ClassLibA.%(Filename).dll</LogicalName> </EmbeddedResource> </ItemGroup> <Message Text="EmbeddedResources now contains @(EmbeddedResource)" Importance="High" /> </Target>
When I made these changes to A, it builds with the FluorineFx embedded included in the manifest. Not only that, it also included libraries that FluorineFx used - antlr, and log4net!