在 csproj 文件中使用系统环境变量的值

栏目: ASP.NET · 发布时间: 7年前

内容简介:Windows 系统以及很多应用程序会考虑使用系统的环境变量来传递一些公共的参数或者配置。Windows 资源管理器使用本文介绍如何在 csproj 文件中使用环境变量。在 Windows 资源管理器中,我们可以使用

Windows 系统以及很多应用程序会考虑使用系统的环境变量来传递一些公共的参数或者配置。Windows 资源管理器使用 %var% 来使用环境变量,那么我们能否在 Visual Studio 的项目文件中使用环境变量呢?

本文介绍如何在 csproj 文件中使用环境变量。

遇到的问题

在 Windows 资源管理器中,我们可以使用 %AppData% 进入到用户的漫游路径。我正在为 希沃白板5 为互动教学而生 - 课件制作神器 编写插件,于是需要将插件放到指定目录:

%AppData%\Seewo\EasiNote5\Walterlv.Presentation

在 Windows 资源管理器中可以直接输入以上文字进入对应的目录(当然需要确保存在)。

在 csproj 文件中使用系统环境变量的值

更多关于路径的信息可以参考: UWP 中的各种文件路径(用户、缓存、漫游、安装……) - walterlv

然而,为了调试方便,我最好在 Visual Studio 中编写的时候就能直接输出到插件目录。

于是,我需要将 Visual Studio 的调试目录设置为以上目录,但是以上目录中包含环境变量 %AppData%

在 Visual Studio 中修改输出路径

如果直接在 csproj 中使用 %AppData% ,那么 Visual Studio 会原封不动地创建一个这样的文件夹。

在 csproj 文件中使用系统环境变量的值

实际上,Visual Studio 是天然支持环境变量的。直接使用 MSBuild 获取属性的语法即可获取环境变量的值。

也就是说,使用 $(AppData) 即可获取到其值。在我的电脑上是 C:\Users\lvyi\AppData\Roaming 。

于是,在 csproj 中设置 OutputPath 即可正确输出我的插件到目标路径。

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFrameworks>net472</TargetFrameworks>
        <OutputPath>$(AppData)\Seewo\EasiNote5\Extensions\Walterlv.Presentation</OutputPath>
        <AppendTargetFrameworkToOutputPath>False</AppendTargetFrameworkToOutputPath>
    </PropertyGroup>
</Project>

这里,我额外设置了 AppendTargetFrameworkToOutputPath 属性,这是避免 net472 出现在了目标输出路径中。你可以阅读我的另一篇博客了解更多关于输出路径的问题:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

Tagging

Tagging

Gene Smith / New Riders / 2007-12-27 / GBP 28.99

Tagging is fast becoming one of the primary ways people organize and manage digital information. Tagging complements traditional organizational tools like folders and search on users desktops as well ......一起来看看 《Tagging》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具