배포 방법에 대한 질문 드립니다

안녕하세요
아무리 고민해도 찾기가 힘들어서 질문 드립니다.

a 콘솔 프로젝트와
b 웹 프로젝트가 있는데

이 두 프로젝트를 자체 포함 모드로 게시를 하니 dll 파일수가 어마어마 합니다…

그리하여

두 프로젝트를 각각 단일 파일로 생성을 하였더니
따로 게시를 하였을 때 보다 1.5배 정도의 용량이 증가하여 또 고민이네요…

혹시 이러한 경우는 어떻게들 배포하시는가요?

참고로,

예전에 닷넷 프레임워크를 사용할 때는 exe파일은 루트 디렉토리에 남기고
dll을 다른 경로에 이동하여 참조가 가능했는데,

닷넷 게시에도 그러한 방법이 있는지도 궁금하네요…

1개의 좋아요

a, b 가 각각 실행 파일이라면, 별도로 배포하는 게 맞지 않을까요?

그런데, b 에서, a가 필요한 경우, 콘솔 프로젝트일 필요는 없습니다.
a를 클래스 라이브러리로 만들면, b에서 실행할 수 있으니까요.

안녕하세요
답변 감사합니다.

한가지 궁금한게 있어서 댓글을 달아봅니다.

a가 메인이고
b가 관리용 ui 형태입니다

a는 항상 실행되어야하고
b는 상황에 따라 꺼져있어도 되어서 분리된 형태입니다.

b에서 a를 참조하는 경우는 파라메터 값으로 실행 a또는 b를 실행하는 형태가 되는건가요?

메인이 어떤 작업을 하는지요?

a는 서버쪽 모니터링 시스템이 동작하고
b는 모니터링 설정이나 수집된 정보를 보여주는 형태입니다~!

웹배포방식 또한 자체 실행형이라면, 여러개의 프로젝트를 모두 참조하는 상위프로젝트를 배포해서 같은경로에 동일 dll을 공유하는 여러 exe가 생기게 할수도 있습니다.

안녕하세요

현재는 동일 폴더 내 구조는 이렇습니다~

c:\test\a.exe
c:\test\b.exe
c:\test\~~.dll

a와 b가 참조하는 dll 약 400?개 정도…

이 자체 포함시 dll들이 너무 많이 생겨서 줄이거나 다른 경로로 변경하고 싶은데
잘 못찾겠네요;;

다음의 파일을 만들고 additionalProbingPaths에 dll을 넣을 상대경로의 디렉토리명을 등록합니다.

| runtimeconfig.template.json

{
  "additionalProbingPaths": [
    "lib"
  ]
}

참조하는 dll 파일들을 lib(또는 원하시는) 디렉토리에 복사한 후 실행하면 dll을 잘 참조하실 꺼에요.

컴파일 하면 후 runtimeconfig.template.json 내용은 다음의 파일에서 확인할 수 있습니다.

| [projectname].runtimeconfig.json

{
  "runtimeOptions": {
    "tfm": "net9.0",
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "9.0.0-preview.2.24128.5"
    },
    "additionalProbingPaths": [
      "lib"
    ],
    "configProperties": {
      "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
    }
  }
}
2개의 좋아요

아래의 프로젝트가 도움이 될 것 같습니다.


감사합니다.

위 프로젝트대로 진행하니 dll 파일들이 이동되고 참조가 되네요~

1개의 좋아요