NuGet: Install.ps1 파일로 파일의 속성을 변경하려면 어떻게 해야 합니까?
NuGet 패키지를 만들고 있으며 이를 위해 Nuspec 매니페스트 파일을 만들었습니다.content
나는 2개의 파일을 가지고 있습니다.test.exe
그리고.test.config
이제 사용자가 이 패키지를 설치할 때 프로젝트에서 이러한 파일의 "Copy To Output Directory" 속성을 "Copy Always"로 변경하려고 합니다.
관련 질문을 찾았습니다. NuGet 속성을 파일에 적용하는 방법, PowerShell을 사용하여 이를 수행할 수 있는 프로그램입니다.install.ps1
스크립트입니다. 하지만 그 파일을 만드는 방법을 모르겠습니다.
install.ps1 파일은 다음과 같아야 합니다.
param($installPath, $toolsPath, $package, $project)
$file1 = $project.ProjectItems.Item("test.exe")
$file2 = $project.ProjectItems.Item("test.config")
# set 'Copy To Output Directory' to 'Copy if newer'
$copyToOutput1 = $file1.Properties.Item("CopyToOutputDirectory")
$copyToOutput1.Value = 2
$copyToOutput2 = $file2.Properties.Item("CopyToOutputDirectory")
$copyToOutput2.Value = 2
다음은 이 문제를 엔드 투 엔드로 해결하는 방법에 대한 약간 더 자세한 내용입니다.
설치 시 상태가 올바르게 설정되도록 하려면 두 가지 작업을 수행해야 합니다.
- install.ps1 스크립트를 작성하여 파일의 상태를 표시합니다.
- install.ps1 스크립트가 nuget 패키지의 Tools 디렉토리에 있는지 확인합니다.
Install.ps1 스크립트
다음 예제 스크립트는 "내용" 및 "보기" 디렉토리의 모든 파일을 "새로 복사"로 재귀적으로 표시합니다.이 예제 스크립트는 명확하게 읽고 이해할 수 있도록 작성되었습니다.Visual Studios 프로젝트의 루트 디렉터리에 있는 Content 및 Views 폴더의 모든 파일에 표시됩니다.
param($installPath, $toolsPath, $package, $project)
function MarkDirectoryAsCopyToOutputRecursive($item)
{
$item.ProjectItems | ForEach-Object { MarkFileASCopyToOutputDirectory($_) }
}
function MarkFileASCopyToOutputDirectory($item)
{
Try
{
Write-Host Try set $item.Name
$item.Properties.Item("CopyToOutputDirectory").Value = 2
}
Catch
{
Write-Host RecurseOn $item.Name
MarkDirectoryAsCopyToOutputRecursive($item)
}
}
#Now mark everything in the a directory as "Copy to newer"
MarkDirectoryAsCopyToOutputRecursive($project.ProjectItems.Item("Content"))
MarkDirectoryAsCopyToOutputRecursive($project.ProjectItems.Item("Views"))
도구로 복사
nuget에서 스크립트를 실행하려면 install.ps1 파일을 Tools 디렉토리에 복사해야 합니다.nusspec 템플릿에 다음을 추가하여 이 작업을 수행할 수 있습니다.
<files>
<file src="install.ps1" target="Tools"/>
</files>
이 경우 Visual Studios 프로젝트 루트에 install.ps1 파일이 있으며 "Copy if newer"로 표시되어 있습니다.
언급URL : https://stackoverflow.com/questions/8474253/nuget-how-can-i-change-property-of-files-with-install-ps1-file
'programing' 카테고리의 다른 글
전화 = N'1234'를 사용한 쿼리가 전화 = '1234'보다 느린 이유는 무엇입니까? (0) | 2023.08.20 |
---|---|
비주얼 스튜디오 2013.컴퓨터의 IIS 웹 사이트에 액세스할 수 있는 권한이 없습니다. (0) | 2023.08.20 |
로컬 호스트 웹 사이트가 mariadb의 링크를 통해 액세스하고 표시할 수 있는 pdfs 디렉토리를 만드는 방법은 무엇입니까? (0) | 2023.08.20 |
Powershell에서 파일 이름을 소문자로 변경 (0) | 2023.08.20 |
가져오기: 가져오기 응답을 사용하여 변수를 설정하고 함수에서 반환합니다. (0) | 2023.08.20 |