I've moved this into the General category.
My concern is that the current solution is actually going to cause more problems as people don't yet realize the indirect ramifications (or haven't really fully tested) the scenarios.
Unfortunately, the references metadata is not a workaround in this case. First, it's impossible to currently do different references per target platform. In this case, I'd want the winmd to be referenced by the WinJS and the others by the .NET libs. That said, what if I have the following:
\libs\win8-managed
pcl.dll
bar.dll
CoolThing.winmd
\libs\win8-javascript
pcl.dll
bar.dll
CoolThing.winmd
Suppose CoolThing depends on the other libs. If my solution has a C# project that needs to use my lib and the WinJS one does too, I'm stuck. Even if only the winmd file is added as a reference to the WinJS, I'll still hit that AppX packaging issue as the path will be different. Filtering won't work because they all need the same references.
My concern is that if this goes forward, then it'll cause an irrevocable mess (as it'd be very hard to remove this behavior later). You'll have projects breaking and it'll be painful to fix it.
Here's another scenario: What happens to 3rd party references. So now I want my winmd file to use a logging package (MetroLog, for example). Do I put the MetroLog dlls in my \libs\win8-javascript dir? That'll create instant conflicts if a newer version of MetroLog comes out -- and is completely against the NuGet model of separating dependencies.
I'm really just suggesting that we think this through, along with the various ramifications, before it's "too late." I really do want proper WinJS/WinRT support (and have been wanting it for a long time). I'm just afraid of providing a solution that works in some simple cases but then breaks when used in more realistic projects.
Regards,
Oren