编辑3:看起来我正在尝试做的事情不受支持;实际上不可能跨配置“共享”project.json文件.我用How to point to a different project.json location in a .NET Core PCL?取代了这个问题
编辑2:是的,我的怀疑是正确的. ProjectJson和ProjectLockJson实际上并不是特殊的MSBuild属性,它们的值正在另一个导入的MSBuild项目中用于执行实际工作.当我有更新时,我会在此上发布更多内容(希望以答案的形式).
编辑:我已经发布了整个项目to GitHub,所以你们可以得到一个repro.只需git克隆存储库,在VS中打开它,开始构建,你应该点击错误.
原帖
我正在尝试创建一个基于.NET Core的可移植类库.我无法将多个project.json文件与我的csproj相关联.这是我的目录结构:
LibFoo
|
---- LibFoo.csproj
|
---- project.json
|
---- Platforms
|
---- Net45
| |
| ---- project.json
|
---- Profile32
|
---- project.json
我有两个MSBuild平台(不包括AnyCPU),Net45和Profile32.基本上,当它设置为.NET Framework 4.5时,我希望它编译包括根目录中的project.json和Platforms / Net45中的project.json.当它设置为Profile32时,我希望它与Platforms / Profile32中的project.json一起使用.
我的问题是,我怎样才能在MSBuild中使用它?这是我的csproj文件的相关片段:
<ItemGroup Condition=" '$(Platform)' == 'Net45' ">
<!-- Target WPF apps -->
<TargetPlatform Include=".NETFramework, Version=4.5" />
</ItemGroup>
<ItemGroup Condition=" '$(Platform)' == 'Profile32' ">
<!-- Target Windows 8.1 Universal apps -->
<TargetPlatform Include="Windows, Version=8.1" />
<TargetPlatform Include="WindowsPhoneApp, Version=8.1" />
</ItemGroup>
<ItemGroup>
<None Include="Platforms\Net45\project.json" />
<None Include="Platforms\Profile32\project.json" />
</ItemGroup>
<PropertyGroup>
<ProjectJsonRoot>Platforms\$(Platform)</ProjectJsonRoot>
<ProjectJson>$(ProjectJsonRoot)\project.json</ProjectJson>
<ProjectLockJson>$(ProjectJsonRoot)\project.lock.json</ProjectLockJson>
</PropertyGroup>
<ItemGroup>
<!-- Include a common project.json for shared configs -->
<None Include="project.json" />
</ItemGroup>
出于某种原因,ProjectJson和ProjectLockJson部分似乎不起作用.我怀疑它们是问题,因为我在MSBuild找不到任何官方文档,但CoreFX似乎在他们的csproj文件中使用它非常成功.难道我做错了什么?
解决方法:
问题是你应该从.csprojs转移到.xprojs.然后每个.xproj都可以有单个project.json,可以定位多个框架.
好文章:http://blog.marcgravell.com/2015/11/the-road-to-dnx-part-1.html
这是我的样本:https://github.com/adamsitnik/BenchmarkDotNet