我有一个包含几个c#项目的解决方案,我希望能够在一个地方将所有项目的输出路径和其他属性设置在一起.Property Sheets(vsprops)似乎不能用于C#项目,$(SolutionDir)变量被忽略.是否有其他方法可以在多个C#项目中设置属性?
更新 按照Bas Bossink的回答中的信息,我能够通过创建一个公共csproj并将其导入单个项目来设置多个项目的输出路径.其他几点:
在Visual Studio中构建时,如果对公共项目进行了更改,则必须触摸/重新加载引用它的任何项目以获取要更改的更改.
在单个项目中也设置的任何属性都将覆盖公共属性.
通过Visual Studio UI将$(SolutionDir)设置为输出路径不会按预期工作,因为该值被视为字符串文字而不是扩展.但是,使用文本编辑器将$(SolutionDir)直接设置到csproj文件中可以正常工作.
Bas Bossink.. 39
csproj文件已经是一个msbuild文件,这意味着csproj文件也可以使用这里描述的import元素.import元素正是您所需要的.您可以创建一个包含以下内容的Common.proj:
$(SolutionDir)output 4 false true
您可以在每个csproj中导入此Common.proj,例如:
import语句应该位于依赖于Common.proj中定义的属性的任何任务之前
我希望这有帮助.我无法用$(SolutionDir)变量确认你的问题,我多次使用它.但我确实知道,当您通过命令行在解决方案中包含的特定项目上运行msbuild命令时,不会设置此变量.在Visual Studio中构建解决方案时将设置它.
csproj文件已经是一个msbuild文件,这意味着csproj文件也可以使用这里描述的import元素.import元素正是您所需要的.您可以创建一个包含以下内容的Common.proj:
$(SolutionDir)output 4 false true
您可以在每个csproj中导入此Common.proj,例如:
import语句应该位于依赖于Common.proj中定义的属性的任何任务之前
我希望这有帮助.我无法用$(SolutionDir)变量确认你的问题,我多次使用它.但我确实知道,当您通过命令行在解决方案中包含的特定项目上运行msbuild命令时,不会设置此变量.在Visual Studio中构建解决方案时将设置它.