我有MSVS 2017(15.3)和以下问题。我的项目引用 System.Data.SQLite ,其中包含 targets 文件,该文件将一些本机dll复制到输出文件夹。一切正常(dll出现在正确的位置),直到我在props文件中指定 BaseIntermediateOutputPath 参数的值。设置参数后,构建成功但缺少dll。
项目文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net452</TargetFramework>
</PropertyGroup>
<Import Project="common.net.props" />
<ItemGroup>
<PackageReference Include="System.Data.SQLite" Version="1.0.105.2" />
</ItemGroup>
导入道具具有以下内容
<Project>
<PropertyGroup>
<SolutionDir>$(MSBuildThisFileDirectory)</SolutionDir>
<Configuration Condition="$(Configuration) == ''">Debug</Configuration>
</PropertyGroup>
<PropertyGroup>
<SynOutDir>$(TargetFramework)_$(Platform)_$(Configuration)</SynOutDir>
</PropertyGroup>
<PropertyGroup>
<BaseOutputPath>../bin/</BaseOutputPath>
<BaseIntermediateOutputPath>../tmp/$(MSBuildProjectName)/</BaseIntermediateOutputPath>
<OutputPath>$(BaseOutputPath)$(SynOutDir)</OutputPath>
<OutDir>$(OutputPath)</OutDir>
<LangVersion>7</LangVersion>
</PropertyGroup>
</Project>
答案 0 :(得分:1)
您在导入订单导致的MSBuild中遇到了已知问题。在MSBuild 15中,&lt; Project&gt;上的“SDK”属性。是一个隐含的顶部/底部导入。你的导入发生得太晚了。
更改订单应解决问题。你可以这样做:
<Project>
<Import Project="common.net.props" />
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<!-- the rest of your project -->
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
</Project>
您也可以将文件命名为“Directory.Build.props”,它会神奇地为您导入。 见https://github.com/Microsoft/msbuild/issues/1603