Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net core 是否正在编译项程序集的MSBuild条件_.net Core_Msbuild - Fatal编程技术网

.net core 是否正在编译项程序集的MSBuild条件

.net core 是否正在编译项程序集的MSBuild条件,.net-core,msbuild,.net Core,Msbuild,我的目标是向任何“条目”程序集自动添加另一个PackageReference。通常它是定义了Main()的,但没有任何类库 我尝试将类似的内容添加到我的目录中。Build.props: <Project> <ItemGroup Condition=" '$(IS_THE_ENTRY_ASSEMBLY)' == 'true' "> <PackageReference Include="Serilog.Sinks.Seq&quo

我的目标是向任何“条目”程序集自动添加另一个PackageReference。通常它是定义了Main()的,但没有任何类库

我尝试将类似的内容添加到我的目录中。Build.props:

<Project>
  <ItemGroup Condition=" '$(IS_THE_ENTRY_ASSEMBLY)' == 'true' ">
    <PackageReference Include="Serilog.Sinks.Seq" Version="..." />
  </ItemGroup>
</Project>

我找不到任何MSBuild属性可以告诉我程序集是否为条目程序集,因此另一个可行的条件是“此程序集是否引用程序包Serilog.Sinks.File?”。为此,我尝试了以下各种形式:

<ItemGroup Condition=" '%(PackageReference.Include)' == 'Serilog.Sinks.File' ">
<ItemGroup Condition=" '%(PackageReference)' == 'Serilog.Sinks.File' ">
<ItemGroup Condition=" '@(PackageReference)' == 'Serilog.Sinks.File' ">

但是,我似乎也找不到这样做的正确语法


解决这个问题的任何一种方法都是受欢迎的。

关于如何编译代码有四种可能性:
exe
winexe
模块
(可以找到)。通过项目文件中的
设置

  • exe
    可用于控制台应用程序。可用于窗口应用程序,但启动时控制台窗口打开
  • winexe
    可用于窗口应用程序。没有创建控制台
  • 用于库。无法直接运行
  • 模块
    不确定如何使用
前2项要求
Main
函数能够运行,因此我们可以检查
OutputType
是否设置为其中一项


如果项目文件中未设置
OutputType
,则默认为
Library


不确定字符串比较是区分大小写还是不区分大小写

Directory.Build.props用于公共属性。在这种情况下,您希望将属性应用于特定项目。为什么不在必选项目中写这一行呢?@JL0PD我可以(现在我已经做了),但我想知道是否有一种方法可以在一个解决方案中的多个项目的一个位置自动完成这一操作。我需要的实际逻辑还检查环境变量,最好避免在任何地方重复它。