在cproj文件中将引用标记为developmentOnly?

时间:2016-12-22 17:29:56

标签: c# visual-studio visual-studio-2013 nuget resharper

来自this帖子:

  

您参考nuget Jetbrains.Annotations,并且不要定义   JETBRAINS_ANNOTATIONS:此类注释仅对开发人员有用   使用源代码,它们不会在您的二进制文件中编译   (使用条件语句)并且它们在不可见时   引用你的DLL。你甚至可以添加developmentOnly =“true”   属性为packages.config中的Jetbrains.Annotations,默认情况下也是如此   它不会被视为依赖。

在我的cproj文件中,我有:

<Reference Include="JetBrains.Annotations, Version=10.2.1.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
  <HintPath>..\..\Build Files\packages\JetBrains.Annotations.10.2.1\lib\net\JetBrains.Annotations.dll</HintPath>
  <Private>True</Private>
</Reference>

我可以完全摆脱这个引用并依赖packages.config条目:

  <package id="JetBrains.Annotations" version="10.2.1" targetFramework="net45" developmentOnly="true" />

在packages.config和cproj文件中包含引用的目的是什么,假设cproj文件已经引用了packages.config?

1 个答案:

答案 0 :(得分:1)

csproj文件中的引用用于指示.dll文件的提示路径。从Jetbrains.Annotations库调用类和属性时,需要指定路径。

package.config文件由NuGet基础架构管理。它用于跟踪和恢复已安装的软件包及其各自的版本。 有关packages.config的一些详细信息,请See here

所以他们有不同的用法,你不能完全摆脱这个引用,只依赖于packages.config条目。