我们有一个依赖的nuget包,但是它有一个.targets文件,看起来像这样
<select onchange="beerFunction(this)">
<option>Jelen</option>
<option>Lav</option>
<option>Jagodinsko</option>
<option>Nikšićko</option>
</select><br><br>
<h2>Answer:</h2>
<p id="paragraf">
<script>
</script>
</p>
我们不需要也不希望在构建时进行400多个文件的复制,那么如何防止这种特定的PostBuildEvent?我们已经能够定义
<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>
在我们的csproj中,但它消除了所有PostBuildEvent,而将来可能会有一个nuget包,我们想服从其PostBuildEvent,我们只是不想服从此特定包的
如果可能,我们还希望保留ItemGroup提示,但是如果需要,我们可以将其添加到csproj
答案 0 :(得分:0)
防止nuget PostBuildEvent
如果您不想消除所有PostBuildEvents
,则可以通过从命令行将它们设置为空字符串来暂时禁用构建事件:
msbuild foo.sln /p:PreBuildEvent= /p:PostBuildEvent=
当然,如果我们想最终解决此问题,我们仍然必须支持nuget软件包。您可以从项目文件.targets
中删除.csproj
文件。为此,请卸载项目,找到导入的.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软件包。
希望这会有所帮助。