NuGet 패키지를 통해 존재하는 파일의 내용을 변경할 수 있습니까? 의미, 당신이 새로운 MVC3 웹 사이트를 만든다고합시다. 홈 페이지를 업데이트 할 NuGet 패키지를 설치하려고합니다. 시작 메시지를 변경 한 다음 레이아웃을 변경하여 작성한 새로운 뷰를 포함하고 홈 컨트롤러를 업데이트하여 새 뷰를 반환하는 메소드를 포함하십시오. 어떻게이 일을 끝낼 수 있습니까?NuGet 패키지를 통해 기존 파일을 어떻게 변경합니까?
답변
NuGet 패키지를 설치 한 후 원하는 파일을 수동으로 수정할 수 있습니다. VS에서 (또는 다른 편집기로) 편집하십시오. NuGet 패키지와 관련된 유일한 차이점은 원래 패키지 파일과 파일간에 변경 사항이 감지 될 때 패키지를 제거/업데이트하면 수정 된 파일이 제거되지 않는다는 것입니다. 로그에 대한 언급이있을 것입니다.
업데이트 :
NuGet이 .transform and .pp files를 통해 패키지를 설치하는 동안 프로젝트 파일을 수정하기위한 지원이있다. 그러나 .ts 파일은 새로운 소스 코드 파일을위한 것이지만, 변환 파일은 설정 파일 (편집 할 수 없음)에 내용을 추가하는 데는 한계가 있습니다.
PowerShell에서 EnvDte CodeModel (예 : install.ps1)을 사용하여 기존 소스 코드를 수정할 수 있습니다. 그것은 조금 더 복잡하지만.
NuGet Package Explorer에서 JQuery NuGet 패키지를 열고 (또는 패키지의 압축을 풀면) install.ps1과 common.ps1을 보면 _references.js에 자동으로 행을 추가하는 예제를 볼 수 있습니다 JQuery의 경우 JQuery API가 IntelliSense에 표시됩니다.
그래, 자동으로 코드 (특히 사람들이 편집 할 수있는 코드)를 업데이트하는 것은 상당히 복잡한 프로세스입니다. JQuery 예제는 정규 표현식을 사용하여 업데이트하기 전에 기존 참조를 찾지 만 알려진 모든 특정 파일에 한 줄 주석을 추가/업데이트합니다. 그것이 단지 코멘트 일 뿐이므로 잘못된 것입니다.)
더 많은 예제와 OP 요청과 같은 도우미 함수 라이브러리를보고 싶습니다.
function AddOrUpdate-Reference($scriptsFolderProjectItem, $fileNamePattern, $newFileName) {
try {
$referencesFileProjectItem = $scriptsFolderProjectItem.ProjectItems.Item("_references.js")
}
catch {
# _references.js file not found
return
}
if ($referencesFileProjectItem -eq $null) {
# _references.js file not found
return
}
$referencesFilePath = $referencesFileProjectItem.FileNames(1)
$referencesTempFilePath = Join-Path $env:TEMP "_references.tmp.js"
if ((Select-String $referencesFilePath -pattern $fileNamePattern).Length -eq 0) {
# File has no existing matching reference line
# Add the full reference line to the beginning of the file
"/// <reference path=""$newFileName"" />" | Add-Content $referencesTempFilePath -Encoding UTF8
Get-Content $referencesFilePath | Add-Content $referencesTempFilePath
}
else {
# Loop through file and replace old file name with new file name
Get-Content $referencesFilePath | ForEach-Object { $_ -replace $fileNamePattern, $newFileName } > $referencesTempFilePath
}
# Copy over the new _references.js file
Copy-Item $referencesTempFilePath $referencesFilePath -Force
Remove-Item $referencesTempFilePath -Force
}
감사합니다! 이런 종류의 작업을 진행하는 "안녕하세요, 세계!"- 예입니다. – vbullinger
- 1. NuGet 패키지를 종속성없이 추가하십시오.
- 2. NuGet 패키지를 온라인에로드하고 사전 설치하십시오.
- 3. Nuget 패키지를 설치할 수 없습니다.
- 4. WinRT 개발은 NuGet 패키지를 지원합니까?
- 5. 기존 Xcode 대상을 동적에서 정적으로 어떻게 변경합니까?
- 6. MSDeploy 패키지를 설치할 때 기존 파일을 어떻게 보존합니까?
- 7. 웹의 기존 라인을 변경하는 Nuget
- 8. 자체 생성 NuGet 패키지를 버전 관리에 배치해야합니까?
- 9. NuGet 패키지를 만들 때 기존 소스 코드 파일을 수정할 수 있습니까?
- 10. NuGet 패키지를 최신 버전으로 자동 업데이트하는 방법
- 11. Nuget 패키지를 만들 때 참조 nuspec 파일
- 12. VS 2010 솔루션에서 Nuget 패키지를 다시 사용하십시오.
- 13. 손으로 Nuget 패키지를 만드는 방법 (Nuget.exe 또는 Nuget Explorer 없음)?
- 14. 기존 GitHub 프로젝트의 홈페이지 URL은 어떻게 변경합니까?
- 15. 솔루션 수준의 NuGet 패키지를 만드는 방법은 무엇입니까?
- 16. Github. .gitignore를 통해 무시되는 것을 어떻게 변경합니까?
- 17. NuGet 패키지 복원은 빌드시 패키지를 복원하지 않습니다.
- 18. asp.net 4.5 Microsoft.WebSockets NuGet 패키지를 사용하는 예제
- 19. NuGet 이외의 참조를 참조하여 NuGet 패키지 생성
- 20. 어떻게 ADB를 통해 네트워크 상태를 변경합니까?
- 21. 링크를 통해 사이트의 일부분을 어떻게 변경합니까?
- 22. nuget - 내 패키지를 설치하기 전에 프로젝트 유형을 결정하십시오.
- 23. MIDI 파일을 쓸 때 악기를 어떻게 변경합니까?
- 24. 어떻게 SalesForce 패키지를 백업합니까?
- 25. 프로젝트 파일에서 NuGet 패키지를 생성하여 필요한 어셈블리가 포함되도록하려면 어떻게합니까?
- 26. NuGet 패키지로 T4 포함 파일을 배포하는 방법
- 27. VS2012에 특정 Nuget 패키지를 설치할 수 없음 - 네트워크에있는 것으로 나타납니다.
- 28. 자동 증가 열 시작 값을 liquibase를 통해 어떻게 변경합니까?
- 29. 아래 변수를 어떻게 변경합니까?
- 30. mysql에서 시간대를 어떻게 변경합니까?
확실히하지 무슨 뜻입니다 :
여기 common.ps1에서 하나 개의 함수입니다. 제 말은 설치 자체를 통해 파일을 변경할 수 있습니까? 예를 들어, NuGet 패키지 내의 web.config를 변경할 수 있다고 들었습니다. 일부 지시문이나 스크립트 등? 나는 당신이 어떤 파일을 스크립트를 통해 바꿀 수 있다고 상상하지만, 그것을 할 수있는 전형적인 방법이 있습니까? 따라서 패키지를 설치하면 몇 가지 새로운 파일이 추가되지만 기존 파일 중 일부는 변경됩니다. 예를 들어, default.aspx의 내용을 변경할 수 있습니다. 아직 내 의미를 얻으려고? – vbullinger
지금 받으 셨습니다, 위의 답변을 업데이트했습니다. 짧은 nuget에서는 .pp/.transform 파일의 일반적인 간단한 시나리오를 지원하기 위해 구운 있습니다. 기존 코드를 수정하는 것은 NuGet에서 지원하지 않으며 powershell 스크립트를 통해 수행됩니다. CodeModel을 살펴 보았지만 간단한 예제를 찾을 수 없었습니다. –
파일을 가지고있는 것에 대해 봤어 .PP로 생각해. 네임 스페이스 같은 것 대신 변수를 남기고 프로젝트 파일에서 가져 오는 것이지.하지만 어떻게 Entity Framework 패키지를 추가 할까? web.config 노드? 그것은 대본을 가지고 있습니까? – vbullinger