Visual studio 有没有一种方法可以;凌驾;a.csproj文件设置?

Visual studio 有没有一种方法可以;凌驾;a.csproj文件设置?,visual-studio,msbuild,Visual Studio,Msbuild,我的解决方案中有很多项目 我希望每个都有一个覆盖的设置。我可以把它们都编辑一下。但对于跟随我的开发人员来说,这是一件乏味且容易出错的事情 因此,我希望有一种方法可以在构建开始之前将自定义的.proj文件合并到.csproj中 我要更改的设置是输出设置(用于调试配置)。我想将其设置为$(SolutionDir)\bin\Debug 我是一个一厢情愿的思想者?或者有办法做到这一点吗?从msbuild命令行设置输出参数: /p:OutputPath=“$(SolutionDir)\bin\Debug”

我的解决方案中有很多项目

我希望每个都有一个覆盖的设置。我可以把它们都编辑一下。但对于跟随我的开发人员来说,这是一件乏味且容易出错的事情

因此,我希望有一种方法可以在构建开始之前将自定义的.proj文件合并到.csproj中

我要更改的设置是输出设置(用于调试配置)。我想将其设置为$(SolutionDir)\bin\Debug


我是一个一厢情愿的思想者?或者有办法做到这一点吗?

从msbuild命令行设置输出参数:

/p:OutputPath=“$(SolutionDir)\bin\Debug”

OutputPath-指定相对于项目目录的输出目录路径,例如“bin\Debug”

另一个选项是在csproj文件中放置配置覆盖。如下图所示。不确定这是否是你想做的事情

<Config
Name = “Release”
AllowunsafeBlocks = “false”
BaseAddress = “285212672”
CheckForOverflowUnderflow = “false”
ConfigurationoverrideFile = “debug. web. config”
DefineConstants = “TRACE”
DocumentationFile = “
DebugSymbols = “false”
FileAlignrnent = “4096”
IncrementalBuild = “false”
Optimize = “true”
OutputPath = “bin\”
RegisterForcomlnterop = “false”
RemovelntegerChecks = “false”
TreatWarningsAsErrors = “false”
WarningLevel = “4”
/>

您可以创建一个自定义的.targets文件,用于设置所有项目的通用属性

在自定义.targets文件中,设置属性:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <OutputPath>$(SolutionDir)\bin\Debug</OutputPath>
</PropertyGroup>

$(SolutionDir)\bin\Debug
您仍然必须在每个.csproj文件中包含此目标文件,并删除以前设置的OutputPath属性(否则,它将覆盖.targets文件中设置的属性)



虽然这仍然需要编辑每个.csproj文件,但与在每个文件中直接设置该属性相比,它更易于维护,特别是如果您认为将来可能会有更多的设置,您希望每个项目都具有相同的设置。在任何添加的项目中,开发人员都必须记住导入该.targets文件。

只要尝试一下,就会发现宏无法展开。所以不。@HansPassant-如果卸载项目并将其添加到xml中,宏将展开。如果您通过IDE执行,那么它将转义$,(和),但是如果它在xml中,它就可以正常工作。然而,这是一个接一个的解决方案。我希望有一个更全球化的解决方案。
<Import Project="<PathToYourTargetsFile>"/>