6

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

我想让每个人都有一个设置被覆盖。我可以去编辑它们。但这对于跟随我的开发人员来说是乏味且容易出错的。

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

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

我是个一厢情愿的人?或者有没有办法做到这一点?

4

2 回答 2

7

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

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

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

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

<Import Project="<PathToYourTargetsFile>"/>

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

于 2012-08-21T06:32:37.763 回答
3

从 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”
/>
于 2012-08-20T21:42:34.743 回答