プロジェクトファイル(例:.vcxproj)を使用して環境変数を設定しようとしていますmsbuild、環境変数の設定方法は?
プロパティー機能を見ましたが、そのような機能はないようです。
私は環境変数を取得する方法はあるが、設定方法が見つからないことを知っています。
プロジェクトファイルに環境変数を設定する必要があるような気がします。
プロジェクトファイル(例:.vcxproj)を使用して環境変数を設定しようとしていますmsbuild、環境変数の設定方法は?
プロパティー機能を見ましたが、そのような機能はないようです。
私は環境変数を取得する方法はあるが、設定方法が見つからないことを知っています。
プロジェクトファイルに環境変数を設定する必要があるような気がします。
物事のカップル:
1)あなたが唯一のMSBuildのコンテキストで変数を使用している場合は、あなただけの代わりに、環境変数
2を設定しようとしているの標準のMSBuild変数を使用することができます)env varを設定する必要がある場合は、まあ、それはすぐに使えるものではありません。カスタムタスクを作成し、それをプロジェクトファイルに活用する必要があります。これを行う方法の概要を説明するMSDNスレッドへのリンクです。
http://social.msdn.microsoft.com/forums/en-US/msbuild/thread/0fb8d97d-513e-4d37-8528-52973f65a034
コード化されたタスクは、MSBuild v4.0からプロジェクトファイルに置くことができます。このように:
<UsingTask
TaskName="SetEnvironmentVariableTask"
TaskFactory="CodeTaskFactory"
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v$(MSBuildToolsVersion).dll">
<ParameterGroup>
<Name ParameterType="System.String" Required="true" />
<Value ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Using Namespace="System" />
<Code Type="Fragment" Language="cs">
<![CDATA[
Environment.SetEnvironmentVariable(Name, Value);
]]>
</Code>
</Task>
</UsingTask>
MSBuildの14+で、AssemblyFile参照はちょうどでなければなりません。なお:
<Target Name="SampleTarget" BeforeTargets="Build">
<SetEnvironmentVariableTask Name="TEST_ENV_VAR" Value="$(MSBuildProjectName)" />
</Target>
くらいです:
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll"
SetEnvironmentVariableTask
は、ターゲットから使用することができます小さなMSBuildタスク用に別の.DLLをオーサリングするよりも手軽です。
私はそうかもしれませんが、Visual Studio 2012でこれを動作させることはできませんでした。しかし、私は解決策を見つけることができました(http://stackoverflow.com///テンプレートを使用しているt4テンプレート/ 20688714#20688714)を参照してください。 –
これは、特定のターゲットのコンテキスト内でのみ機能するようです。別のターゲットからenv varを読み込もうとしましたが、もう存在しませんでした。 – gschuager
Environment.SetEnvironmentVariable(Name、Value、EnvironmentVariableTarget.Machine)またはEnvironment.SetEnvironmentVariable(Name、Value、EnvironmentVariableTarget.User)を試してみてください。デフォルトはEnvironment.SetEnvironmentVariable(Name、Value、EnvironmentVariableTarget.Process) – herskinduk
環境変数をSET XXX = $(XXX)行のシーケンスとしてテキストファイル(.cmd)に書き込むことを検討することもできます。次に、コマンドウィンドウで.cmdを実行します。
すべてのSETコマンドでItemGroupを定義し、Task 'WriteLinesToFile'を使用して、各項目を.cmdテキストファイルの行に書き込みます。
<ItemGroup>
<BuildEnvItem Include="REM This file is auto generated. Do not edit" />
<BuildEnvItem Include="SET TEST_ENV_VAR=$(TEST_ENV_VAR)" />
<!-- add more as needed -->
<ItemGroup>
<Target Name="DefineBuildEnvironmentVariables">
<WriteLinesToFile File="Build_env.cmd" Lines="@(BuildEnvItem)" Overwrite="true" Encoding="Unicode"/>
</Target>
これは、msbuildを使用している.cmdが存在する場合に役立ちます。最初の.cmdはmsbuildを使用してBuild_env.cmdを生成し、次に進む前にBuild_env.cmdを呼び出します。
ありがとうございました! –
コードサンプルを含めてください。リンクは信頼できません。 – Rbjz