C#工程引用需要注意的事项:
<ItemGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<Reference Include="McsfCLRNetBase64d">
<HintPath>..\..\..\..\..\Output\win7_64bit\bin\Debug\McsfCLRNetBase64d.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="McsfCLRNetBase64d">
<HintPath>..\..\..\..\..\Output\win7_64bit\bin\Debug\McsfCLRNetBase64d.dll</HintPath>
<Private>True</Private>
</Reference>
<ItemGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<Reference Include="McsfCLRNetBase64">
<HintPath>..\..\..\..\..\Output\win7_64bit\bin\Release\McsfCLRNetBase64.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="McsfCLRNetBase64">
<HintPath>..\..\..\..\..\Output\win7_64bit\bin\Release\McsfCLRNetBase64.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
我们现在所有的C#的工程引用其他组的dll 的路径为 ..\..\..\..\..\Output\win7_64bit\bin\Release\McsfXXXXXX.dll,
但是CM的Package和Daily不同, 不提供Output路径。 为什么以前的Build都通过? 因为C#的每个Reference的格式如下所示,
<Reference Include=" McsfXXXXXX ">
<HintPath>..\..\..\..\..\Output\win7_64bit\bin\Release\ McsfYYYYYY.dll</HintPath>
<Private>True</Private>
</Reference>
当引用的相对路径找不见dll时, 默认去找Include所起名字的dll, 假如McsfXXXXXX和相对路径中的文件名字McsfYYYYYY不匹配, 就会导致Build失败。