在不触及 csproj 文件的情况下更改构建目标

Change build destination without touching csproj file

我已将第 3 方项目添加到我的解决方案中,该项目是我从 github 中分叉出来的。

我会经常在这个 repo 中做一些更改,我将请求拉回 orig 存储库。

如何在不修改 csproj 文件的情况下修改此项目的构建目标,构建到 ..\..\bin\Debug 而不是 bin\Debug

我试图避免在推送更改时每次都隐藏 csproj。

答案,基于 JakeSays 输入

//Filename - *.csproj.user
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <OutputPath>..\..\..\bin\Debug\</OutputPath>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
    <OutputPath>..\..\..\bin\Debug\</OutputPath>
  </PropertyGroup>
</Project>

将使用此输出路径代替原始 OutputPath 条目

有几种选择:

将文件添加到 .gitignore 文件

这将忽略文件和对其所做的任何更改。

--assume-unchaged

在该文件上设置 --assume-unchaged 标志,这样它将停止跟踪对该文件的更改

使用方法 (2) 将告诉 git 忽略此文件,即使 ts 已经提交。
它将允许您修改文件而无需将其提交到存储库。

git-update-index

--[no-]assume-unchanged When this flag is specified, the object names recorded for the paths are not updated. Instead, this option sets/unsets the "assume unchanged" bit for the paths. When the "assume unchanged" bit is on, the user promises not to change the file and allows Git to assume that the working tree file matches what is recorded in the index. If you want to change the working tree file, you need to unset the bit to tell Git. This is sometimes helpful when working with a big project on a filesystem that has very slow lstat(2) system call (e.g. cifs).

Git will fail (gracefully) in case it needs to modify this file in the index e.g. when merging in a commit; thus, in case the assumed-untracked file is changed upstream, you will need to handle the situation manually.

git add -P

使用 git add -p 仅添加您将选择提交的部分更改。
您可以选择要添加的更改(选择更改)而不是全部提交。

应在 .csproj 文件之外进行更改。我建议在项目文件旁边放置一个 .csproj.user 文件,并覆盖其中的输出路径。

然后您可以将 .user 文件添加到 gitignore(如果尚未添加)