c# - 如何设置几个visual C#项目的输出路径

标签 c# visual-studio

我有一个包含多个 C# 项目的解决方案,我希望能够在一个地方一起设置所有项目的输出路径和其他属性。属性表 (vsprops) 似乎无法用于 C# 项目,$(SolutionDir) 变量被忽略。是否有任何其他方法可以跨多个 C# 项目设置属性?

更新 按照 Bas Bossink 的回答中的信息,我能够通过创建一个通用的 csproj 并将其导入到单个项目中来设置多个项目的输出路径。其他几点:

  • 在 Visual Studio 中构建时,如果对公共(public)项目进行了更改,则有必要触摸/重新加载任何引用它的项目,以使更改生效。
  • 在单个项目中设置的任何属性都将覆盖通用属性。
  • 通过 Visual Studio UI 将 $(SolutionDir) 设置为输出路径无法按预期工作,因为该值被视为字符串文字而不是展开。但是,使用文本编辑器将 $(SolutionDir) 直接设置到 csproj 文件中会按预期工作。

最佳答案

csproj 文件已经是一个 msbuild 文件,这意味着 csproj 文件也可以使用 import 元素,如所述 here .导入元素是 正是您所需要的。您可以创建一个 Common.proj,其中包含如下内容:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5"xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
    <OutputPath>$(SolutionDir)output</OutputPath>
    <WarningLevel>4</WarningLevel>
    <UseVSHostingProcess>false</UseVSHostingProcess>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
</Project>

您可以在每个 csprojs 中导入此 Common.proj,例如:

<Import Project="..\Common.proj" />

import 语句应该在任何依赖于 Common.proj 中定义的属性的任务之前

希望对您有所帮助。我无法用我多次使用的 $(SolutionDir) 变量来确认你的问题。但是我确实知道,当您通过命令行在解决方案中包含的特定项目上运行 msbuild 命令时,不会设置此变量。它将在您在 Visual Studio 中构建解决方案时设置。

关于c# - 如何设置几个visual C#项目的输出路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/621461/

相关文章:

c# - 根据参数使用不同依赖项时的依赖策略

c# - 如何使用类的 Id 属性作为值将 List<T> 转换为逗号分隔的列表

visual-studio - Visual Studio 2017 : vcvars for toolset v140

sql-server - Microsoft Visual Studio 2017 Shell 的缺失组件(已隔离)

c# - Visual Studio 2017 : C# highlight and surround with parentheses

visual-studio - Visual Studio 2015 远程调试器调试器成员或监视表达式均不返回值

c# - errorProvider1不包含定义,没有扩展方法

c# - 如何从 C# 中的存储过程(SELECT COUNT)获取值

c# - WPF 工具栏项呈现失败

javascript - Apache Cordova 中的 HTML 模板?