Para empacotar alguns arquivos de recursos em um pacote nuget, o que alguém normalmente faria é o seguinte.
Coloque todos os arquivos de recursos no content\
diretório de um pacote nuget. Isso seria especificado pela seguinte linha em um .nuspec
arquivo:
<files>
<file src="Project\bin\Release\script.js" target="content\js\script.js" />
<files>
Agora, quando este pacote nuget é instalado AnotherProject
, a seguinte estrutura de arquivo surge:
Solution.sln
packages\Project.1.0.0\content\js\script.js // the original resource file
AnotherProject\js\script.js // a physical copy
AnotherProject\AnotherProject.csproj // <Content /> tag (see below)
Durante a instalação do pacote, AnotherProject.csproj
foi injetado com a tag:
<Content Include="js\script.js" />
e isso é para a cópia física do recurso original (que está no packages\
diretório).
Meu objetivo não é ter a cópia física de um arquivo de recurso no AnotherProject
diretório, mas sim um "link" para o recurso original no packages\
diretório. No csproj, deve ser assim:
<Content Include="packages\Project.1.0.0\content\js\script.js">
<Link>js\script.js</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
Agora, uma solução alternativa "faça da maneira mais difícil" que posso pensar é:
content\
para que não sejam adicionados automaticamente,Install.ps1
script que iria hackear a estrutura do arquivo csproj e adicionar a parte XML necessária manualmente,Isso, no entanto, tem as seguintes desvantagens:
Install.ps1
,Como o NuGet atualmente não oferece suporte para isso, suas opções são usar o PowerShell ou um destino MSBuild personalizado.
PowerShell
Você deve ser capaz de evitar o prompt de recarregamento do projeto se usar o modelo de objeto do Visual Studio (EnvDTE). Eu daria uma olhada em Project.ProjectItems.AddFromFile (...) para ver se isso funciona para você.
Alvo MSBuild
Normalmente, os .props e .targets personalizados são usados para personalizar o processo de construção. No entanto, eles são apenas arquivos de projeto MSBuild para que você possa adicionar itens para seus recursos a esses arquivos de projeto.
Observe que .props são importados no início do arquivo de projeto quando um pacote NuGet é instalado, enquanto .targets são importados no final do projeto.
Personalizando NuGet
Outra opção, que daria mais trabalho, seria modificar o NuGet para oferecer suporte ao que você deseja fazer.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras