有没有办法"覆盖".csproj文件设置?

Vac*_*ano 6 msbuild visual-studio

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

我希望每个人都有一个被覆盖的设置.我可以去编辑它们.但对于跟在我后面的开发人员来说,这很乏味且容易出错.

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

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

我是一个如意的思想家?或者有办法做到这一点?

eli*_*nor 7

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

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

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

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

<Import Project="<PathToYourTargetsFile>"/>
Run Code Online (Sandbox Code Playgroud)

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


Sof*_*ter 3

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

\n\n

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

\n\n

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

\n\n

另一个选项是在 csproj 文件中放置配置覆盖。就像下面这样。不确定这是否是您想做的事情。

\n\n
<Config\nName = \xe2\x80\x9cRelease\xe2\x80\x9d\nAllowunsafeBlocks = \xe2\x80\x9cfalse\xe2\x80\x9d\nBaseAddress = \xe2\x80\x9c285212672\xe2\x80\x9d\nCheckForOverflowUnderflow = \xe2\x80\x9cfalse\xe2\x80\x9d\nConfigurationoverrideFile = \xe2\x80\x9cdebug. web. config\xe2\x80\x9d\nDefineConstants = \xe2\x80\x9cTRACE\xe2\x80\x9d\nDocumentationFile = \xe2\x80\x9c\nDebugSymbols = \xe2\x80\x9cfalse\xe2\x80\x9d\nFileAlignrnent = \xe2\x80\x9c4096\xe2\x80\x9d\nIncrementalBuild = \xe2\x80\x9cfalse\xe2\x80\x9d\nOptimize = \xe2\x80\x9ctrue\xe2\x80\x9d\nOutputPath = \xe2\x80\x9cbin\\\xe2\x80\x9d\nRegisterForcomlnterop = \xe2\x80\x9cfalse\xe2\x80\x9d\nRemovelntegerChecks = \xe2\x80\x9cfalse\xe2\x80\x9d\nTreatWarningsAsErrors = \xe2\x80\x9cfalse\xe2\x80\x9d\nWarningLevel = \xe2\x80\x9c4\xe2\x80\x9d\n/>\n
Run Code Online (Sandbox Code Playgroud)\n