0

Я пытаюсь автоматически обнаружить web.configs как часть события предварительной сборки преобразования в одном из файлов проекта веб-приложения, этот код поднимается на один уровень папок из моего проекта файл и получает все web.configs в каждом каталоге и подкаталогах каталога:Нежелательные изменения в файле .csproj при сборке

<ItemGroup> 
    <WebConfigsRelativePath Include ="..\**\Web.config"/> 
</ItemGroup> 

Это прекрасно работает, но каждый раз, когда я строю и выход Visual Studio, я получаю приглашение спрашивать меня, если я хочу, чтобы сохранить изменения, внесенные в мой файл решения , Если я выбираю да, и откройте файл проекта, приведенный выше код изменяется в места расположения каждого web.config

<ItemGroup> 
    <WebConfigsRelativePath Include="..\Web\Decade\Web.config" /> 
    <WebConfigsRelativePath Include="..\Web\Matrix\RiskAnalysis\Web.config" /> 
    <WebConfigsRelativePath Include="..\Web\Service\Web.config" /> 
    <WebConfigsRelativePath Include="..\Web\Web.config" /> 
</ItemGroup> 

Это было бы хорошо, но в целом причиной я автоопределение web.configs пре- build, так что я могу добавить и удалить web.configs, как мне угодно, без необходимости жесткого кодирования их местоположений, и каждый раз, когда я выхожу из VS, места будут жестко закодированы в файле проекта ....

Кто-нибудь знает, почему этот ItemGroup меняется каждый раз, когда я выхожу из Visual Studio?

+1

Это на самом деле тот же вопрос, что и http://stackoverflow.com/questions/21583437/how-do-i-prevent-visual-studio-2012-from-expanding-an-msbuild-4-wildcard – stijn

ответ

0

Пока я не могу объяснить, почему VS решает вывести список файлов, загружаемых с помощью шаблона каждый раз, когда мое решение построено, я могу показать вам, как я получил вокруг этого вопроса:

<PropertyGroup> 
    <WebConfigsSearchString>..\**\Web.config</WebConfigsSearchString> 
</PropertyGroup> 

<ItemGroup> 
    <WebConfigsRelativePath Include ="$(WebConfigsSearchString)"/> 
</ItemGroup> 

Определяя строка поиска в свойстве (которая всегда остается статичной) и ссылается на свойство в списке файлов группы элементов для включения, код группы элементов никогда не изменяется, но поиск web.config выполняется каждый раз при выполнении сборки.

1

Если я беру существующий веб-проект, но использую <Content />, а не пользовательский <WebConfigsRelativePath /> в вашем примере, то я вижу ожидаемое поведение.

Попробуйте использовать это:

<Content Include="..\**\Web.config"> 
    <SubType>Designer</SubType> 
</Content> 

Edit:

Если у вас есть специальная обработка для группы WebConfigsRelativePath элемента, пост, что в обновлении вашего вопроса.

+0

Спасибо за ваш ответ, но я не совсем уверен, как получить ссылку на список файлов, если я воспользуюсь вашим решением – ShaneC

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