防止 nuget PostBuildEvent
Prevent nuget PostBuildEvent
我们有一个我们依赖的 nuget 包,但它有一个看起来像这样的 .targets 文件
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Reference Include="PackageName">
<HintPath>$(MSBuildThisFileDirectory)..\..\sdk\net45\PackageName.dll</HintPath>
</Reference>
</ItemGroup>
<PropertyGroup>
<PostBuildEvent>
pushd $(MSBuildThisFileDirectory)..\..\sdk\net45\
for /d %%i in (PackageName*) do (
xcopy "%%i" "$(TargetDir)%%i\" /S /Y
)
popd
</PostBuildEvent>
</PropertyGroup>
</Project>
我们不需要也不希望在构建时复制 400 多个文件,那么我们如何才能防止这个特定的 PostBuildEvent?我们已经能够定义
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
在我们的 csproj 中,但这消除了所有 PostBuildEvents,而未来可能会有一个 nuget 包,我们想要遵守它的 PostBuildEvent,我们只是不想遵守这个特定包的
我们还希望尽可能保留 ItemGroup 提示,但如果需要,我们可以将它们添加到我们的 csproj
Prevent nuget PostBuildEvent
如果您不想消除所有 PostBuildEvents
,您可以通过从 命令行 将构建事件设置为空字符串来暂时禁用构建事件:
msbuild foo.sln /p:PreBuildEvent= /p:PostBuildEvent=
当然,要想最终解决这个问题,还是要背nuget包。您可以从项目文件 .csproj
中删除 .targets
文件。为此,卸载您的项目,找到导入 .targets
文件的代码,如:
<Import Project="..\packages\xxx\Build\xxx.targets" Condition="Exists('..\packages\xxx\Build\xxx.targets')" />
如果要保留此方法,您需要将 ItemGroup 提示添加到您的 csproj 文件中。
或者,您可以从 nuget 包中删除此构建事件。从 Microsoft Store 下载 NuGet 包资源管理器,打开该 nuget 包,双击 .targets
文件并编辑它,删除构建事件:
然后将其保存到 local feed,从本地源安装 nuget 包。
希望这对您有所帮助。
我们有一个我们依赖的 nuget 包,但它有一个看起来像这样的 .targets 文件
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Reference Include="PackageName">
<HintPath>$(MSBuildThisFileDirectory)..\..\sdk\net45\PackageName.dll</HintPath>
</Reference>
</ItemGroup>
<PropertyGroup>
<PostBuildEvent>
pushd $(MSBuildThisFileDirectory)..\..\sdk\net45\
for /d %%i in (PackageName*) do (
xcopy "%%i" "$(TargetDir)%%i\" /S /Y
)
popd
</PostBuildEvent>
</PropertyGroup>
</Project>
我们不需要也不希望在构建时复制 400 多个文件,那么我们如何才能防止这个特定的 PostBuildEvent?我们已经能够定义
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
在我们的 csproj 中,但这消除了所有 PostBuildEvents,而未来可能会有一个 nuget 包,我们想要遵守它的 PostBuildEvent,我们只是不想遵守这个特定包的
我们还希望尽可能保留 ItemGroup 提示,但如果需要,我们可以将它们添加到我们的 csproj
Prevent nuget PostBuildEvent
如果您不想消除所有 PostBuildEvents
,您可以通过从 命令行 将构建事件设置为空字符串来暂时禁用构建事件:
msbuild foo.sln /p:PreBuildEvent= /p:PostBuildEvent=
当然,要想最终解决这个问题,还是要背nuget包。您可以从项目文件 .csproj
中删除 .targets
文件。为此,卸载您的项目,找到导入 .targets
文件的代码,如:
<Import Project="..\packages\xxx\Build\xxx.targets" Condition="Exists('..\packages\xxx\Build\xxx.targets')" />
如果要保留此方法,您需要将 ItemGroup 提示添加到您的 csproj 文件中。
或者,您可以从 nuget 包中删除此构建事件。从 Microsoft Store 下载 NuGet 包资源管理器,打开该 nuget 包,双击 .targets
文件并编辑它,删除构建事件:
然后将其保存到 local feed,从本地源安装 nuget 包。
希望这对您有所帮助。