.net visual-studio msbuild copy-local msbuild-projectreference

.net - MSBuild ProjectReference: private("Copy Local"): ¿cuáles son los valores y el comportamiento permitidos?



visual-studio copy-local (1)

TL; DR ¿Existe alguna documentación oficial que describa en detalle cómo funciona la opción <private> / "Copy Local" con MSBuild ? ¿Y qué valores se supone que van a entrar en ello?

Cuando agregue una referencia de proyecto de un proyecto en Visual Studio a otro, agregará un <ProjectReference Include=".....csproj"> al archivo .csproj MSBuild.

Cuando agrega una referencia de archivo de un proyecto en Visual Studio a un archivo de ensamblaje en el sistema de archivos, agregará un <Reference Include="Foo"> <HintPath>....Foo.dll</HintPath> ... al archivo .csproj MSBuild.

En ambos casos, para la Copy Local = True|False configuración de Visual Studio Copy Local = True|False , se agregará un subelemento <Private>True</Private> o <Private>False</Private> .

Reference y la Reference ProjectReference parecen estar documentadas en los elementos comunes del proyecto MSBuild :

<ProjectReference> Represents a reference to another project. Item Name Description ------------------------- Name ... Project ... Package ... <Reference> Represents an assembly (managed) reference in the project. Item Name Description -------------------------- HintPath Optional string. Relative or absolute path of the assembly. Name ... ... Private Optional string. Determines whether to copy the file to the output directory. Values are: 1. Never 2. Always 3. PreserveNewest

Te darás cuenta de que,

  1. ProjectReference no documenta el elemento <private> en absoluto
  2. Reference no muestra los valores True o False como posibles.

Asi que. Eh ¿Hay alguna documentación oficial (estaré más que feliz con una buena entrada de blog) que describa en detalle cómo funciona la opción <private> ? ¿Están los doctores simplemente muertos o hay algo más?

Ejemplo de fragmento de mi VS 2013 Express aquí:

... <ItemGroup> <Reference Include="ClassLibrary2"> <HintPath>C:/Somewhere/ClassLibrary2.dll</HintPath> <Private>True</Private> </Reference> <Reference Include="System" /> ... <ItemGroup> <ProjectReference Include="../ClassLibrary1/ClassLibrary1.csproj"> <Project>{861dd746-de2e-4961-94db-4bb5b05effe9}</Project> <Name>ClassLibrary1</Name> <Private>False</Private> </ProjectReference> ...


Para los elementos de Referencia y Referencia de proyecto, los valores aceptados para Privado son: Verdadero o Falso

Esta propiedad en msbuild se corresponde con la propiedad de referencia del proyecto en VS como Copia Local.

Obtuve la respuesta anterior configurando manualmente las propiedades de referencia en VS y viendo el xml. No pude encontrar la documentación oficial de los metadatos del elemento privado.

Al revisar los documentos en https://msdn.microsoft.com/en-us/library/bb629388.aspx muestran los valores aceptados como Nunca, Siempre y Preservar nuevo. Estos parecen estar equivocados y solo están disponibles para los metadatos de CopyLocal, que se utilizan en Contenido, Ninguno y otros elementos de archivo.