2017-02-13 2 views
2

Я создал пакет Nuget для контента, который добавляет текстовый файл к проекту, в который он был установлен. Я проверил в проекте без текстовый файл, так как я хочу, чтобы он был восстановлен во время nuget restore. Все хорошо, пока машина CI не попытается восстановить пакет. Восстановление завершается успешно, но текстовый файл не добавляется. По-видимому, nuget считает, что текстовый файл уже существует, поскольку в файле проекта есть ссылка на него.Контент-пакет Nuget не может восстановить содержимое

Как получить nuget для восстановления текстового файла?

По существу, поведение, которое я хочу, такое же, как и с DLL-файлами: при установке пакета в проект добавляются ссылки на библиотеки DLL; когда пакет восстанавливается, библиотеки DLL восстанавливаются, чтобы удовлетворить ссылки в файле проекта. Я хочу такое же поведение, но и для текстовых файлов. Это возможно?

ответ

0

То, что я в конечном итоге делает помещал текстовый файл в папку верхнего уровня, как это (отрывок из моего .nuspec):

</metadata> 
    <files> 
     <file src="dictionary.txt" target="dictionary.txt" /> 
    </files> 
</package> 

Так что, когда пакет установлен, файл помещается в /packages/MyPackage.0.0.6 и ссылки из .csproj как так:

<ItemGroup> 
    <EmbeddedResource Include="$(SolutionDir)packages\MyPackage.0.0.6\dictionary.txt" /> 
</ItemGroup> 

Затем файл читается .cs так:

var stream = Assembly.GetExecutingAssembly() 
      .GetManifestResourceStream(GetType(), "dictionary.txt"); 

Это вызвало у меня желаемое поведение: когда пакет восстанавливается, файл восстанавливается и помещается именно туда, на который указывает ссылка.

Смежные вопросы