2013-05-22 26 views
6

Tôi vẫn đang cố gắng làm quen với những điều MSBuild. Hiện tại tôi đang quan tâm đến việc triển khai thông qua tập lệnh PowerShell bằng cách sử dụng tập lệnh được tạo từ PackageWeb-Nuget-Package (video demo). Tôi đã cố gắng mà ra cho một vài ngày nay và nó dường như làm việc. Tuy nhiên, "đột nhiên" chuỗi kết nối trong web.config tạo được tokenized và thay vì chuỗi kết nối trong câu hỏi tôi thấyLà "AutoParameterizationWebConfigConnectionStrings" -option cách duy nhất để ngăn chặn tokenization chuỗi kết nối?

connectionString="$(ReplacableToken_DefaultConnection-Web.config Connection String_0) 

tôi đã viết "đột nhiên" bởi vì tôi không thể liên kết này (đối với tôi mới) hành vi để bất cứ điều gì tôi đã làm trong những giờ trước.

Vì vậy, để tổng hợp nó: Việc triển khai từ gói đang làm việc tốt, cũng là chuyển đổi cấu hình chính xác đang được áp dụng, nhưng tôi kết thúc với chuỗi kết nối được mã hóa này.

Tôi nhận ra rằng tôi có thể sửa lỗi này nếu tôi chèn

<AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings> 

thành một PropertyGroup (Tôi chỉ cần đặt nó vào trong tạo ra các mục tiêu-file rằng NuGet-Package tạo)

Tuy nhiên tôi thực sự không thích điều này, phải chèn thêm giá trị này vào mỗi dự án có thể cần nó; đặc biệt là vì tôi không biết tôi cần điều chỉnh này ngay từ đầu. Hôm qua nó đã làm việc và tôi không có thêm dòng này chèn vào bất kỳ dự án hoặc tập tin mục tiêu.

Vì vậy, tôi đã hy vọng rằng có thể ai đó biết một chuyển đổi bổ sung, lừa hoặc thiết lập có thể có ảnh hưởng bổ sung về cách thức hoạt động của nó.

+0

Đây là cũ, nhưng bạn có muốn chia sẻ những phát hiện của mình về cách bạn đã làm mà không chỉ định thuộc tính loooooog này trong tệp * proj? – ostati

+1

@Ostati Thành thực mà nói, tôi không "giải quyết" tại bất kỳ thời điểm nào - thuộc tính 'AutoParameterizationWebConfigConnectionStrings = false' vẫn là một phần của quá trình triển khai của tôi; mặc dù tôi đã không gặp bất kỳ vấn đề gì với điều đó, bên cạnh esthetically, tôi cũng sẽ vẫn rất quan tâm nếu điều này có thể được phá vỡ trong bất kỳ cách nào. – DrCopyPaste

+2

@Ostati Để thêm vào đó, điều chính mà tôi không thích về điều này là phải sửa đổi từng dự án ('s proj-file) cho điều đó; tuy nhiên bạn không phải làm điều đó, bạn có thể chuyển các thuộc tính thành các tham số tới 'msbuild' - bằng cách đó bạn ghi đè các thuộc tính hiện có trong các tệp proj của bạn hoặc thêm các thuộc tính mới mà bạn cần (giống như' AutoParameterizationWebConfigConnectionStrings') hy vọng điều này sẽ giúp bạn ;) (ví dụ: http://stackoverflow.com/a/6052146/2186023) – DrCopyPaste

Trả lời

0

Tôi đã lưu ý rằng những thứ như $ (ReplacableToken_ dường như xảy ra ngẫu nhiên khi xuất bản và có thể khắc phục tình trạng này bằng cách dọn dẹp trước khi xây dựng lại và tái xuất bản. Tuy nhiên, vì bạn thực sự không thể biết được, trừ khi bạn luôn kiểm tra thủ công web.config sau khi xuất bản, tôi cũng đã thêm

<AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings> 

cho dự án dịch vụ web trong câu hỏi.

1

Microsoft đang sử dụng auto tham số hóa theo mặc định. Điều này bao gồm connectionStrings het. Bạn có thể vô hiệu hóa điều này bằng cách thêm này vào tệp dự án.

<AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>

Đối với việc vô hiệu hóa tất cả các biến bạn có thể thêm này như mô tả here.

<TransformWebConfigEnabled>false</TransformWebConfigEnabled>

Đối vô hiệu hóa tất cả các tham số cho một gói triển khai: <DisableAllVSGeneratedMSDeployParameter>true</DisableAllVSGeneratedMSDeployParameter>

0

Bây giờ công ty của tôi đã được sử dụng "phát hành quản lý" công cụ TFS, mà làm việc tắt của một xây dựng đơn lẻ, chúng tôi don' t sử dụng biến đổi web.config nữa và thay vào đó sử dụng phương thức parameters.xml của MS WebDeploy để trao đổi các giá trị cho các môi trường khác nhau. Tuy nhiên, tôi gặp phải vấn đề của chuỗi liên kết 'auto-gen'd' được đề cập ở trên. Dưới đây là một công việc xung quanh cho nó.

Nếu bạn đang sử dụng tệp parameters.xml trong dự án của mình, nếu bạn cung cấp thông số giống với tên tự động cho chuỗi kết nối, nó hoạt động.

Vì vậy, bên dưới tôi có 'DBConnectionNameHere' (ví dụ như tên connectionStrings 'của tôi' trong web.config) và sau đó tôi chỉ thêm "-Web.config Connection String" vào tên. Bây giờ thay vì chuỗi conn tự động gen sẽ ghi đè của riêng tôi trong tệp parameters.xml, nó sẽ hoạt động và chỉ cần thêm một thẻ con 'parameterEntry' bổ sung và vô hại.

Ví dụ:

<parameter name="DbConnectionNameHere-Web.config Connection String" defaultValue="#{TokenHereOrActualValue}#"> 

    <parameterEntry kind="XmlFile" scope="\\web.config$" 
match="/configuration/connectionStrings/add[@name='DbConnectionNameHere']/@connectionString" /> 

</parameter> 

Hy vọng rằng sẽ giúp một ai đó!

Chris

Các vấn đề liên quan