如果app定位net461和netcoreapp,则VS安装程序安装程序不包含exe

时间:2017-12-06 18:08:19

标签: visual-studio .net-core setup-project

我在VS中有一个简单的解决方案,其中包含一个定位netcoreapp2.0net461的控制台应用:

ConsoleTest.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFrameworks>netcoreapp2.0;net461</TargetFrameworks>
  </PropertyGroup>
</Project>

我还有一个针对此控制台应用程序的VS安装程序安装程序项目,该项目配置为在我的应用程序文件夹中包含“输出”类型的“控制(活动)的主输出”:

enter image description here

每当我构建并运行此安装程序(定位net461)时,它只在应用程序文件夹输出中包含ConsoleTest.dll

enter image description here

如果我删除netcoreapp2.0ConsoleTest.csproj的目标框架引用并且只定位net461,我会从安装程序获得正确的ConsoleTest.exe输出:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net461</TargetFramework>
  </PropertyGroup>
</Project>

enter image description here

似乎在定位netcoreapp2.0net461时,设置安装程序将始终选择netcoreapp2.0的输出。由于这是一个Windows安装程序,我需要带有exe的net461输出。

如何在我的Windows安装程序安装程序中正确定位net461输出,同时仍然可以在控制台项目中同时存在两个目标框架?

1 个答案:

答案 0 :(得分:2)

如果您的应用需要系统上的.NET 461,那么您可以在安装项目中指定。在View-Editor-Launch Conditions中有.NET FW下拉选项,您可以在其中指定461版本(我在VS 2017社区版中)。

使用主输出通常看起来不可预测。只需将文件从资源管理器拖放到应用程序文件夹中,或者右键单击“应用程序文件夹”窗格并添加文件。