我正忙于将代码从.Net Framework库迁移到.netstandard2.0库。到目前为止,一切进展顺利,但现在我被.csproj文件所困扰。
现有项目文件已对此进行了定义
<Target Name="Rebuild">
<Exec Command="echo Now Rebuilding the package" />
</Target>
实际命令执行一个exe,该exe基于xsd生成一堆xml类。
我无法在.netstandard2.0项目中使用它吗?
我到处搜索过,但找不到无法正常工作的原因...
最佳答案
我怀疑在您的特定实例中,Rebuild
目标将被在代码之后隐式导入的sdk目标覆盖。如果要覆盖SDK提供的任务,则需要更改为显式SDK导入(而不是<Project Sdk="...">
):
<Project>
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<!-- other project content -->
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
<Target Name="Build">
<!-- overwrite Build target here -->
</Target>
<Target Name="Rebuild">
<!-- overwrite Rebuild target here -->
</Target>
</Project>
支持
Exec
目标,尽管echo
命令可能会或可能无法运行,具体取决于您在其上运行的平台(因为echo
可能只是Shell的内置命令,但无法运行可执行文件) )。确保:
该命令以在
PATH
上找到的可执行文件的路径开头,或者被指定为绝对或相对于正在构建的csproj文件的可执行文件。目标实际上已执行。例如。有些程序可以使用
/t:Clean;Build
代替/t:Rebuild
。关于c# - 为什么Exec Command在netstandard2.0的.csproj中不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48543442/