2017-01-27 2 views
3

Возможно, это ошибка, но у меня есть 2 проекта F # в моем решении. Один из них - консольное приложение, другое - тестовое приложение (ожидаемое тестирование, так что технически также консоль). В решении также есть 3 других проекта C#.Как заставить app.config стать exe.config

Когда я создаю свое решение, app.config в проекте запуска не копируется в файл foo.exe.config. Вместо этого создается и помещается файл конфигурации F # по умолчанию.

Файл, который генерируется выглядит как этот

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

Ни одно из конфигов приложений в моем решении выглядят даже отдаленно подобное. Я проверил, что мои app.configs настроены на режим содержимого. Также это просто проблема с основным приложением; тестовое приложение копирует app.config в его bin/debug просто отлично.

Я прибегал к открытию корзины и перетаскивал правильный exe.config в каталог каждый раз, прежде чем я хочу запустить программу. Я понятия не имею, где даже начать искать, что, вероятно, неправильно настроено.

+0

Рассмотрите возможность предоставления более подробной информации о своем решении. Было бы трудно воспроизвести его, угадывая. – bytebuster

+0

Похоже, что «Paket» будет генерировать, если вы попробуете его красиво. Но я не могу точно сказать, откуда этот файл, не видя ваши файлы проекта. Скорее всего, есть что-то, о чем вы не замечаете. –

+0

Я не думаю, что вам нужно пометить app.config как контент - на самом деле свойства по умолчанию при создании нового консольного приложения F # отсутствуют/не копируются (а выделенная задача похожа где-то в файл '.targets' по умолчанию явно копирует и переименовывает его). – scrwtp

ответ

3

Почему, по вашему мнению, это ошибка? Тысячи файлов app.configs копируются каждую секунду - вы бы предположили, что это довольно хорошо протестировано. Вероятно, что-то не так, как ваш проект настроен. Возможно, вы захотите заглянуть в файл проекта (подсказка: это обычный xml-файл, который вы можете прочитать).

Если вы строите свой проект через VS, я бы предложил вам сначала увеличить объемность MSBuild (Инструменты -> Параметры -> Проекты и решения -> вкладка «Сборка и запуск»).

Как только вы это сделаете, очистите и перестройте свой проект. Вы должны найти выход из задачи, которая копирует файл app.config в окне Build Output при поиске CopyAppConfigFile. Это должно сказать вам, что, если угодно, действительно копируется - и откуда.

Таким же образом вы можете найти, пытается ли любая другая задача, являющаяся частью вашего процесса сборки, перезаписывать файл по любой причине - при условии, что он производит правильный вывод журнала.

+0

bumping up MSBuild (files) verbosity ... вряд ли возможно ;-) robkuz

+0

@robkuz: Вы еще не видели, что я видел ...;) – scrwtp

+0

По какой-то причине причина msbuild не смогла очистить файл конфигурации по умолчанию, который был сгенерирован в obj \ Debug \ Crawler.fsproj.Crawler.exe.config. В какой-то момент он застрял там. Я вошел, и рука удалила его, и теперь все работает нормально. – Yojin

Смежные вопросы