vs 多目标框架输出不同结果的文件名
描述如下
https://stackoverflow.com/questions/65599082/change-multi-target-project-output-path-and-file-name
希望同一个项目在编译后得到不同的文件名
D:\bin\app-net48.exe
D:\bin\app-net50.exe
使用stackoverflow的答案,vs将提示我找不到目标框架
貌似$(TargetFramework)
这个变量就不存在
<PropertyGroup Condition="'$(TargetFramework)'=='net48'"> <AssemblyName>app-net48</AssemblyName> </PropertyGroup> <PropertyGroup Condition="'$(TargetFramework)'=='net5.0-windows'"> <AssemblyName>app-net50</AssemblyName> </PropertyGroup>
最后我用生成后事件,直接改名了
if "$(TargetFramework)" == "net6-windows" copy "$(TargetPath)" "$(TargetDir)$(MSBuildProjectName)CORE.exe" if "$(TargetFramework)" == "net48" copy "$(TargetPath)" "$(TargetDir)$(MSBuildProjectName)FX.exe" del /f /s /q "$(TargetPath)"
在exe项目中,$(TargetPath)在fx中返回的是 项目名.exe
在core中返回的是 项目名.dll
,exe是启动器的名字
这里我统一需要exe的名字
将 $(TargetPath)
替换为 $(TargetDir)$(TargetName).exe
if "$(TargetFramework)" == "net6-windows" copy "$(TargetDir)$(TargetName).exe" "$(TargetDir)$(MSBuildProjectName)CORE.exe" if "$(TargetFramework)" == "net48" copy "$(TargetDir)$(TargetName).exe" "$(TargetDir)$(MSBuildProjectName)FX.exe" del /f /s /q "$(TargetDir)$(TargetName).exe"
处于个人需要,在删除之前,我还需要它执行一次
rem 运行一次设置环境变量 start /wait "" "$(TargetDir)$(TargetName).exe" "--onlySetEnv"
分类:
C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步