从 .Net Framework 升级的 .Net 8 WPF 应用程序中构建事件 MS 属性为空白

问题描述 投票:0回答:1

$(OutDir) 和 $(ProjectDir) MSBuild 属性在 .net Framework 4.8 项目中为空,我使用升级助手升级到 .net 8。本文指定了这些: https://learn.microsoft.com/en-us/visualstudio/ide/how-to-specify-build-events-csharp?view=vs-2022#macros

这是我的结果

1>Configuration: Debug
1>DevEnvDir: C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\
1>OutDir:
1>ProjectDir:
1>VisualStudioVersion: 17.0
1>AssemblySearchPaths: {CandidateAssemblyFiles};{HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}
1>AssemblyName: AcquisitionCoreTestApp
1>BaseIntermediateOutputPath: obj\
1>CscToolPath:

这是我创建的新 .net 8 wpf 应用程序项目的结果,这些显示正确。怎么会?我比较了 csproj 文件,但没有看到任何明显的东西......

1>WpfApp1 -> C:\temp\net8prototypes\WpfApp1\bin\Debug\net8.0-windows\WpfApp1.dll
1>Configuration: Debug
1>DevEnvDir: C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\
1>OutDir: bin\Debug\net8.0-windows\
1>ProjectDir: C:\temp\net8prototypes\WpfApp1\
1>VisualStudioVersion: 17.0
1>AssemblySearchPaths: {CandidateAssemblyFiles};{HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}
1>AssemblyName: WpfApp1
1>BaseIntermediateOutputPath: obj\
1>CscToolPath:
visual-studio-2022 .net-8.0
1个回答
0
投票

可能与MSBuild属性的初始化方式有关。在构建过程开始时,将评估项目的 include 属性。因此,如果您依赖于构建过程中创建的文件,则必须将它们声明为动态的。动态项在目标内部定义或使用 CreateItem 任务定义。 此外,(ProjectDir) 仅在导入 Microsoft.Common.Targets 后才可用,而 (MSBuildProjectDir) 是 MSBuild 本身的保留属性。因此,使用 $(MSBuildXXX) 属性将确保它们始终可供您使用,而无需导入所有必要的引用。

© www.soinside.com 2019 - 2024. All rights reserved.