使用OutDir时,每个targetframework的子文件夹中的MSBuild输出
当使用新的SDK风格的csproj格式时,可以使用使用OutDir时,每个targetframework的子文件夹中的MSBuild输出,msbuild,visual-studio-2017,Msbuild,Visual Studio 2017,当使用新的SDK风格的csproj格式时,可以使用元素作为分号分隔的目标框架列表,以便为其构建项目 这将在生成输出文件夹中为每个目标框架生成一个子文件夹: 但是,在msbuild命令行上传递OutDir属性时,它不会创建子文件夹,并且生成的程序集都放置在同一文件夹中 有效但不允许输出位置的命令行: msbuild projectfile.csproj 命令行,该命令行选择输出目录,但将生成的程序集放置在同一文件夹中(有效地覆盖首先生成的目标框架程序集): msbuildprojectfile.
元素作为分号分隔的目标框架列表,以便为其构建项目
这将在生成输出文件夹中为每个目标框架生成一个子文件夹:
但是,在msbuild命令行上传递OutDir属性时,它不会创建子文件夹,并且生成的程序集都放置在同一文件夹中
有效但不允许输出位置的命令行:
msbuild projectfile.csproj
命令行,该命令行选择输出目录,但将生成的程序集放置在同一文件夹中(有效地覆盖首先生成的目标框架程序集):
msbuildprojectfile.csproj/p:OutDir=buildtemp
是否有方法将生成输出放置在非默认文件夹中,同时仍保留targetframwork子文件夹?现在使用的属性是
OutputPath
,但是从CLI设置它会使其成为全局属性,并会否决输出路径的自动附加。解决方法是创建一个全局的中间属性,并从项目中使用它
将其添加到属性组中的项目文件中
:
<OutputPath>$(BaseOutputPath)</OutputPath>
这里的问题是SDK试图基于TargetFramework
和AppendTargetFrameworkToOutputPath
更改OutputPath
属性。但如果该值是通过CLI指定的,则项目逻辑无法覆盖该值
还请注意,
BaseOutputPath
实际上用于SDK默认值(默认为bin\
),但默认情况下它将尝试追加配置名称 现在使用的属性是OutputPath
,但是从CLI设置该属性会使其成为全局属性,并会否决输出路径的自动追加。解决方法是创建一个全局的中间属性,并从项目中使用它
将其添加到属性组中的项目文件中
:
<OutputPath>$(BaseOutputPath)</OutputPath>
这里的问题是SDK试图基于TargetFramework
和AppendTargetFrameworkToOutputPath
更改OutputPath
属性。但如果该值是通过CLI指定的,则项目逻辑无法覆盖该值
还请注意,BaseOutputPath
实际上用于SDK默认值(默认为bin\
),但默认情况下它将尝试追加配置名称