2012-10-09 21 views
5

का उपयोग कर बिल्ड पर टी 4 जेनरेट करना मैं वीएस2012 का उपयोग करके अपने प्रोजेक्ट के हर निर्माण पर कोड जेनरेट करने की कोशिश कर रहा हूं।वीएस 2012

मैं अपने समाधान में 3 परियोजनाएं हैं:

  • परियोजना 1 कुछ वर्ग हैं
  • परियोजना 2
  • परियोजना 3 टेम्पलेट है कि एक json फ़ाइल को पढ़ने और फिर सामान्य फोन है सामान्य टेम्प्लेट है टेम्पलेट फॉर्म प्रोजेक्ट 2 अपनी फाइल जेनरेट करने के लिए।

जब मैं बिल्ड/ट्रांसफॉर्म ऑल टी 4 टेम्पलेट्स पर क्लिक कर रहा हूं, तो कोई समस्या नहीं है, पीढ़ी अच्छी तरह से चलती है।

लेकिन मैं अपने निर्माण को प्रत्येक बिल्ड पर स्वचालित रूप से इस चरण को शामिल करने के लिए कॉन्फ़िगर करने की कोशिश कर रहा हूं।

मैं अपने csproj के लिए इस कोड को शामिल किया है:

<Import Project="$MsBuildToolsPath)\Microsoft.CSharp.Targets" /> 
<PropertyGroup> 
    <TransformOnBuild>true</TransformOnBuild> 
    <OverWriteReadOnlyOutputFiles>true</OverWriteReadOnlyOutputFiles> 
</PropertyGroup> 
<Import Project="$(MSBuildExtensionPath32)\Microsoft\VisualStudio\v11.0\TextTemplating\Microsoft.TextTemplating.targets"/> 

मैं अपने आप को रास्ता बना दिया है "\ Microsoft \ VisualStudio \ v11.0 \ TextTemplating \ Microsoft.TextTemplating.targets" क्या से मैं मेरे पीसी पर मिला। उदाहरण मैं से ले लिया था: get-visual-studio-to-run-a-t4-template-on-every-build

समस्या इस लाइन मैं उपयोग कर रहा हूँ से आता है: < # @ फ़ाइल को शामिल = "$ (SolutionDir) \ xxx \ yyy \ zzz \ mytemplate.tt">

और मैं त्रुटि प्राप्त: डी::

विफल फ़ाइल के लिए पाठ शामिल हल करने \ परियोजनाओं \ pppp \ QQQ \ eeee \ $ (SolutionDir) \ xxx \ yyy \ zzz \ mytemplate.tt

चूंकि टेम्पलेट "हाथ से" उत्पन्न होता है (सभी टी 4 टेम्पलेट्स बनाएं/ट्रांसफॉर्म करें), मुझे आश्चर्य है कि बिल्ड समय पर इसे उत्पन्न करने में समस्या क्या हो सकती है।

कोई विचार?

उत्तर

2

समस्या यह है कि जब आप निर्माण प्रक्रिया के दौरान अपना टेम्पलेट चला रहे हैं तो इसे विभिन्न होस्ट के तहत निष्पादित किया जा रहा है और $ (SolutionDir) मैक्रो मौजूद नहीं है। इसके बजाय सापेक्ष पथ का उपयोग करने का प्रयास करें उदा।

<#@ include file="..\xxx\yyy\zzz\mytemplate.tt"> 
+0

वह शामिल हो सकता है लेकिन असेंबली के बारे में क्या? मैंने उन्हें ढूंढने के लिए $ (SolutionDir) का उपयोग किया, मुझे एक ही तरह की त्रुटि है यदि मैं सापेक्ष पथ का प्रयास करता हूं। दिया गया असेंबली नाम या कोडबेस अमान्य था। आपकी मदद के लिए Thx। – Arthis

+0

मैंने अंततः पूर्ण पथ का उपयोग किया क्योंकि कुछ भी ठीक से काम कर रहा था, और मुझे आगे बढ़ने की जरूरत थी। – Arthis

+0

मुझे यकीन नहीं है कि सापेक्ष पथ में समस्या क्या थी, लेकिन आप 'होस्ट.रोलोलवेपाथ' विधि –

संबंधित मुद्दे