我在VS中有一个简单的解决方案,其中包含一个定位netcoreapp2.0
和net461
的控制台应用:
ConsoleTest.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp2.0;net461</TargetFrameworks>
</PropertyGroup>
</Project>
我还有一个针对此控制台应用程序的VS安装程序安装程序项目,该项目配置为在我的应用程序文件夹中包含“输出”类型的“控制(活动)的主输出”:
每当我构建并运行此安装程序(定位net461
)时,它只在应用程序文件夹输出中包含ConsoleTest.dll
:
如果我删除netcoreapp2.0
中ConsoleTest.csproj
的目标框架引用并且只定位net461
,我会从安装程序获得正确的ConsoleTest.exe
输出:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net461</TargetFramework>
</PropertyGroup>
</Project>
似乎在定位netcoreapp2.0
和net461
时,设置安装程序将始终选择netcoreapp2.0
的输出。由于这是一个Windows安装程序,我需要带有exe的net461
输出。
如何在我的Windows安装程序安装程序中正确定位net461
输出,同时仍然可以在控制台项目中同时存在两个目标框架?
答案 0 :(得分:2)
如果您的应用需要系统上的.NET 461,那么您可以在安装项目中指定。在View-Editor-Launch Conditions中有.NET FW下拉选项,您可以在其中指定461版本(我在VS 2017社区版中)。
使用主输出通常看起来不可预测。只需将文件从资源管理器拖放到应用程序文件夹中,或者右键单击“应用程序文件夹”窗格并添加文件。