繁体   English   中英

导入公共文件项目的项目。 如何在Visual Studio中执行

[英]Project that Imports a project of common files. How to do in Visual Studio

我有一个项目,包含几个项目使用的公共文件,并希望通过使用MSBuild导入来使用该项目。

以下是来自* .csproj的片段,其中包含我所追求的内容。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  ***<Import Project="My.commonFiles.csproj" />
  <PropertyGroup>***
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

我无法找到任何参考如何在VS 2015中实现这一点。从逻辑上讲,我认为我会右键单击Project | 单击添加| 单击现有项| 并选择项目,但这不起作用。

我真的不希望手动编辑* .csproj。 有帮助吗?

您必须手动编辑.csproj Visual Studio 2017具有编辑项目文件而无需卸载的功能,但目前仅适用于某些项目类型

另一个让人失望的是,在关闭并重新打开解决方案之前,Visual Studio 2015通常甚至不会对导入的文件进行更改。 (这促使我为我的团队的自定义Visual Studio扩展添加了一项功能,可以检测到这些更改,并提示您只需单击一下即可重新加载解决方案。不幸的是,我没有隔离该功能并可在Visual Studio库中共享。 )在某些情况下,我通过使用MSBuild任务代替Import元素来解决这个问题,沿着这些方向:

<MSBuild Projects="DESIRED_FILE.targets"
         Targets="DESIRED_TARGET"
         Properties="Configuration=$(Configuration);
                     Platform=$(Configuration);
                     Verbosity=$(Verbosity);
                     SomeOtherProperty=$(SomeOtherProperty)" />

但是,由于MSBuild任务会生成一个单独的进程,因此它只对执行Targets有用 - 而不是用于填充常见属性或您似乎尝试过的项目。 对不起,答案太令人失望了!

顺便说一句,为了避免混淆,您可能希望使用以下扩展名之一来命名您创建的任何MSBuild文件,如果.csproj

  • .props如果文件包含PropertyGroupItemGroup元素,则需要放在导入文件的顶部附近
  • .targets (有时也使用.proj )如果它包含Target元素并且应该放在消费文件的底部附近

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM