我有一个具有以下PostBuildEvent的项目:

<PostBuildEvent>
 if exist Diagnostic.nuspec
 if exist "$(SolutionDir)\packages\NuGet.CommandLine.2.8.2\tools\NuGet.exe"
 "$(SolutionDir)\packages\NuGet.CommandLine.2.8.2\tools\NuGet.exe"
 pack Diagnostic.nuspec
 -OutputDirectory "C:\Users\jeroen\Google Drive\NugetLocal\VSDiagnostics"
</PostBuildEvent>

在这里,OutPutDirectory显然是我自己的安装本地的。默认值为.

此配置存储在项目的.csproj文件中,该文件还跟踪诸如对其他程序集的引用以及项目中的文件之类的内容。

因此,我不能简单地忽略git中的文件,否则我对.csproj的其他任何更改都不会通过。

有什么方法可以保留我的本地化PostBuildEvent而不将其强加给其他协作者?

最佳答案

我通过设置用户帐户级别的环境变量来解决它,并根据需要使用或使用默认值。

我只是用以下命令交换了原始的PostBuildEvent和周围的PropertyGroup:

<Choose>
    <When Condition=" $(NUGETLOCAL) != '' ">
        <PropertyGroup>
            <PostBuildEvent>if exist Diagnostic.nuspec if exist "$(SolutionDir)\packages\NuGet.CommandLine.2.8.2\tools\NuGet.exe" "$(SolutionDir)\packages\NuGet.CommandLine.2.8.2\tools\NuGet.exe" pack Diagnostic.nuspec -OutputDirectory $(NUGETLOCAL)</PostBuildEvent>
            <RunPostBuildEvent>OnOutputUpdated</RunPostBuildEvent>
        </PropertyGroup>
    </When>
    <Otherwise>
        <PropertyGroup>
            <PostBuildEvent>if exist Diagnostic.nuspec if exist "$(SolutionDir)\packages\NuGet.CommandLine.2.8.2\tools\NuGet.exe" "$(SolutionDir)\packages\NuGet.CommandLine.2.8.2\tools\NuGet.exe" pack Diagnostic.nuspec -OutputDirectory .</PostBuildEvent>
            <RunPostBuildEvent>OnOutputUpdated</RunPostBuildEvent>
        </PropertyGroup>
    </Otherwise>
</Choose>

环境变量设置为NUGETLOCAL,值"C:\Users\jeroen\Google Drive\NugetLocal\VSDiagnostics"(包括重音符号)。如果未设置变量,它将使用默认目录,并且用户可以选择随时定义自己的变量。

代码可能不尽如人意,因此,如果您看到改进,请告诉我。

我详细介绍了这个here

10-08 13:12