2017-12-20 7 views
0

Visual Studio Tools for Office (VSTO) (Visual Studio 2015)를 사용하여 Excel 추가 기능 프로젝트를 만들고 있습니다. 회사 로고 - .png를 추가/포함해야합니다. 파일을이 addin에 추가하십시오. Visual Studio 리소스에 로고 이미지 파일을 추가했습니다. 나는 시도하여 추가 기능에 포함시킬 VS 자원의 이미지를 사용하여 다음과 같은 - 파일 경로 형식처럼 - 내가 문자열 형식이어야 할 필요 mylogo를 오류 메시지를 수신Visual Studio 2015의 리소스 이미지 액세스 - 특히 위치 경로

var myLogo = Properties.Resources.CompanyLogo; 
myWorkSheet.Shapes.AddPicture(myLogo, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue, 10, 20, 250, 40); 

를 작동하지 않았다. 그래서 나는 작동했던 다음을 시도했다 - 그러나 ..... 이것은 단지 약간의 kludgy처럼 보인다. 내가 System.IO를 사용하여 포함 할 필요가 ....

var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase); 
string myLogo = outPutDirectory.Substring(6, outPutDirectory.Length - 6) + @"\CompanyLogo.png";  

myWorkSheet.Shapes.AddPicture(myLogo, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue, 10, 20, 250, 40); 

나는 또한 내 추가 기능 프로젝트의 루트 폴더에 CompanyLogo.png 파일을 포함하고 나는 출력 디렉터리에 내가 컴파일 할 때마다 복사하도록 설정 계획. 그래서 두 번째 루틴은 여기 DOES입니다.하지만 Project Resources 섹션에있는 파일을 사용하고 싶습니다. Project.Resources에서 Companylogo.png 리소스의 파일 경로를 검색하려면 어떻게합니까?

이것이 가능하지 않은 경우 - Visual Studio의 리소스 속성을 가지고 있거나 사용하는 시점은 무엇입니까? 나는 단지 내가 어딘가에서 뭔가를 놓치고 있다고 생각한다.

답변

0

위의 방법으로 문제가 발생했기 때문에 정적이라고 생각했습니다. 글쎄, 나는 마침내 덜 정적 만들기 위해 자원 속성을 사용하는 방법을 알아 냈 :

Image img = Properties.Resources.CompanyLogo; 
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
img.Save(outPutDirectory + @"\CompanyLogo.png", ImageFormat.Png); 
myWorkSheet.Shapes.AddPicture(outPutDirectory + @"\CompanyLogo.png", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue, 0, 0, 260, 50); 

가 지금은 어셈블리가 어떤 경로를 하드 코딩하는 대신에 실행되는 곳마다 PNG를 저장할 수 있습니다.

하지만 리소스 파일 빌드 동작에있는 다른 질문 하나가 있습니다. 아무 것도 옵션이 없으며 항상 복사하고, 항상 복사하고, 포함 된 리소스, 리소스를 복사합니다. 나는 이러한 각 옵션을 시도했습니다. 어떤 차이도 보이지 않았다 (그리고 매번 목적지 위치에서 png을 삭제했다). 나는 "just in case"를 위해 Build 액션을 Resource로 남겼다. 빌드 액션 유형에 대한 제안이 열려 있습니다.

관련 문제