MSBuild很奇怪
我已经尝试了this和另一个答案,我还尝试了this one
在那之后,我在.csproj
文件中更改了<IntermediateOutputPath>
和<BaseIntermediateOutputPath>
和<OutputPath>
,但是...
它一直在旧的obj
文件夹中创建这个奇怪的东西(我不使用nuget)
project.assets.json
project.nuget.cache
project.packagespec.json
...
我已经了解到Visual Studio遗留工作流会导致这种行为,但是否存在任何解决方法?
我当前的.csproj
文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<StartupObject>Program</StartupObject>
<IntermediateOutputPath>..\..\obj\</IntermediateOutputPath>
<BaseIntermediateOutputPath>..\..\obj\</BaseIntermediateOutputPath>
<OutputPath>..\..\bin\Build\</OutputPath>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="foo\dependency.csproj" />
</ItemGroup>
</Project>
2条答案
按热度按时间djp7away1#
通过在项目的根目录中创建Directory.Build.props文件来解决:
非常肮脏和不明显的微软式黑客
找到here
有没有好的.NET编译器的Windows没有穿透你自己?
h6my8fg22#
我需要类似的东西。在同一个目录中有两个.csproj文件,但目标框架不同,如果没有我在其中一个
.csproj
文件中所做的更改,就会失败。项目可以有
MSBuildProjectExtensionsPath
,但必须在导入SDK之前定义。dotnet SDK构建需要所有更改(不仅仅是属性
MSBuildProjectExtensionsPath
),否则project.assets.json
文件的项目之间会发生交叉授粉,导致构建失败。我不能使用
Directory.Build.props
文件,因为这会影响我的两个项目文件(它们需要分开保存)。请注意,如果有人试图在他们自己的
Directory.Build.props
中覆盖这些变量,那么这可能不满足用例,因此您必须为其他用例扩展此解决方案并进行测试。