我正忙于将代码从.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/

10-13 09:15