Для чего нужен файл. csproj?


Как

<None Include="C:foo.bar" />

отличается от

<Content Include="C:foo.bar" />

?

6 95

6 ответов:

статья MSDN на создать действие свойство объясняет различия.

нет - файл не входит в группу вывода проекта и не компилируется в процессе сборки. Примером может служить текстовый файл, содержащий документацию, например файл Readme.

контент - файл не компилируется, но включается в группу вывода содержимого. Например, этот параметр является значением по умолчанию для .htm или другой вид веб-файла.

одно отличие заключается в том, как они публикуются; элементы "None" не включаются в публикацию, элементы "Content" делают; например, в диалоговом окне "файлы приложений" на вкладке "публикация".

Я не уверен на 100% (я читал описание MSDN Создать Действие свойство), но просто скопировать этот ответ из MSDN в StackOverflow не отвечает на вопрос полностью для меня.

разница нет и контент влияет только на веб-проекты. Для проекта командной строки, проекта WinForm или проекта UnitTest (в моем случае) и т. д. нет и контент не имеют никакой разницы поведение.

MSDN:" группа вывода проекта "или" группа вывода контента " только термины, используемые в веб-проекте, верно?

в моей ситуации мой файл MSBuild имел ItemGroup для ресурсов изображений, которые появились следующим образом:

  <ItemGroup>
    <Content Include="Resources\image001.png" />
    <Content Include="Resources\image002.png" />
    <Content Include="Resources\image003.png" />
    <Content Include="Resources\image004.png" />
    <None Include="Resources\image005.png" />
    <None Include="Resources\image006.png" />
    <None Include="Resources\image007.png" />
  </ItemGroup>

в то время как мой проект строился нормально, это оставило меня удивляться, почему у меня была смесь Content и None тип элемента элемента ItemGroup. Это статья MSDN (для Visual Studio 2010) дал мне руководство, которое я искал:

обратите внимание, что когда редактор ресурсов добавляет изображение, задает построить Действие to нет, потому что .файл resx ссылается на изображение файл. Во время сборки изображение втягивается внутрь .файл ресурсов создан из самого себя .файл resx. Изображение может быть легко доступно с помощью строго типизированного класса автоматически генерируется для .файл resx. Поэтому не следует изменять этот параметр на встроенный Ресурс, потому что это будет включать изображение два раза в собрание.

: С помощью этого руководства, используя текстовый редактор, я изменил Content элементов типа None.

кроме того, обзор элементов MSBuild см. в этом разделе статья MSDN.

у меня есть проект, который не содержит компилируемых элементов (он хранит html и javascript для модульных тестов jasmine).

однажды мое решение (которое содержало указанный проект) перестало компилироваться, сказав, что "целевая "сборка" не существует в проекте".

я добавил импорт, чтобы ввести компилятор, который отлично работал на моей машине, но не смог использовать msbuild на сервере сборки.

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

затем я изменил строку от

<None Include="SpecRunner.html" />

до

<Content Include="SpecRunner.html" />

и он работал на сервере сборки, а также.

вам не нужно ничего в файле проекта шаблона, чтобы включить файлы, которые вы определяете в .vstemplate в противном случае они теряются в процессе создания и перевода. Они остаются в папке temp, которую он использует для создания всего, а затем удаляется вскоре после этого.