Nuget 패키지에 resx 파일을 포함하는 방법

Aug 19 2020

너겟 패키지를 만드는 .Net Framework 4.6.1 프로젝트가 있습니다. 이 너겟 패키지는 단순히 2 개의 dll과 잘 작동하는 두 개의 콘텐츠 파일을 설치합니다.

문제는 이제 다음 위치에있는 resx 파일을 통해 리소스 문자열을 추가했다는 것입니다.

~\App_Data\Global\Resources\resource-strings.resx

그리고 그 파일을 너겟 패키지의 일부로 올바르게 만드는 방법을 모르겠습니다. .nupkg를 생성하면 거기에 resx 파일이 표시되지만 다른 프로젝트에 설치하면 resx 파일을 App_Data \ Global \ Resources 폴더에 복사해야하지만 그렇지 않습니다.

가능합니까?

내가 조사한 바에 따르면 대상 파일 + nuspec 구성으로 무언가를해야한다고 생각하지만 시도한 것은 아무것도 없습니다.

문자 그대로 resx 파일을 복사하면됩니다. 그보다 더 복잡한 것은 없습니다.

답변

PerryQian-MSFT Aug 20 2020 at 06:02

. 가능하고 너겟으로 할 수 있습니다. 이 리소스 파일이 대상 asp net 프로젝트 폴더에 복사되기를 원하므로 다음 단계를 시도 할 수 있습니다.

================================================ ===

먼저 ,이 net461너겟 패키지를 net frameworkasp net 프로젝트 에 설치하려면 파일의 콘텐츠 노드 를 사용해야 xxx.nusepc합니다.

먼저 resource-strings.resx 의 Build ActionContent가 아닌 Embedded Resource 인지 확인하십시오 .

1) 먼저 cmd 명령을 실행 한 cd xxxx(project folder path)다음 실행 nuget spec하여 nuspec 파일을 생성합니다. 이것으로 충분합니다.

2)nuspec 파일을 열고 컨텐츠 노드를 추가하십시오.

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <id>xxx</id>
        <version>xxx</version>
        <title>xxx</title>
        <authors>xxx</authors>
        ............       
    </metadata>
    <files>
        <file src="~\App_Data\Global\Resources\resource-strings.resx(the path of the file in net framework 4.6.1 project)" target="content\App_Data\Global\Resources\resource-strings.resx" />
    </files>
</package>

3) 그런 다음 nuspec파일 을 저장 하고 실행 nuget pack하여 nupkg.

너겟 패키지를 설치 하기 전에 먼저 너겟 캐시 를 정리 하여 잘못된 이전 버전의 너겟을 제거 해야합니다 .

이 패키지를 설치 App_Data\Global\Resources\resource-strings.resx하면 웹 프로젝트 의 루트 경로 에 파일이 복사됩니다 .

================================================ ==

이 패키지를 새 sdk 프로젝트 (Net Core 또는 PackageReference nuget 관리 형식의 xxx )에 설치하려면 복사 작업으로 대상 파일을 만들어야합니다.

1) net framework 4.6.1 프로젝트에 build라는 폴더를 추가 한 다음 file이라는 <Package_id>.props파일 을 추가 합니다.

당신이 nuget 패키지의 ID가 같은 있는지 확인해야 <Package_id>.props. 여기에서 힌트 .

2) 다음을 추가하십시오 <Package_id>.props.

  <Project>
      <Target Name="CopyFilesToProject" BeforeTargets="Build">
        <Message Text="Copy resource-strings.resx  to project" />
        <ItemGroup>
          <SourceScripts Include="$(MSBuildThisFileDirectory)..\content\**\*.*"/> </ItemGroup> <Copy SourceFiles="@(SourceScripts)" DestinationFiles="$(MSBuildProjectDirectory)\%(RecursiveDir)%(Filename)%(Extension)"/>
      </Target>
      
    </Project>

3) 다음 xxx.nuspec과 같이 파일을 수정합니다 .

<?xml version="1.0"?>
<package >
  <metadata>
    <id>xxx</id>
    <version>xxx</version>
    <title>xxx</title>
    <authors>xxx</authors>
    <owners>me</owners>
    ............
  </metadata>
 <files>
<file src="~\App_Data\Global\Resources\resource-strings.resx" target="content\App_Data\Global\Resources\resource-strings.resx" />
<file src="build\xxx(like package_id).props" target="build"/>
</files>

</package>

4)nuget pack 이 프로젝트를 압축 하려면 명령을 사용해야합니다 . 이 패키지를 설치하기 전에 먼저 너겟 캐시를 정리해야합니다.

이 너겟 패키지를 설치 한 후에 는 이 사용자 지정 복사 대상을 실행하여 파일을 기본 프로젝트에 복사하도록 프로젝트를 빌드 해야합니다.

또한 ,이 유사한 문제 이것에 대해가.